getElementById 로 배열 선택

국내에 웹 사이트들이 웹 표준을 지키고 OS나 브라우저와 관계 없이 접근성을 향상 시키기 위한 사이트 버그 신고 및 문제 해결을 위한 게시판입니다.
Post Reply
피핀

getElementById 로 배열 선택

Post by 피핀 »

<input id="test">
<input id="test">

document.getElementById("test") 이렇게 하면 첫번째만 선택되던데..

이렇게 아이디값이 같은 여러개를 웹표준에 맞게 어떻게 선택하죠?

document.all은 ie에서만 되는걸로 알고 있습니다.
빛알갱이
해커
해커
Posts: 1146
Joined: 2004 01 15 20:06 36

Post by 빛알갱이 »

ID는 unique해야 합니다. 그렇지 않으면 ID가 아니겠지요. (하나의 ID를 중복해서 쓰면 HTML 표준 검사를 통과할 수 없습니다. ) 주민 등록 번호를 공유할 수 없듯이요. 스타일 변경을 하시고자 한다면, class를 같이 주시고, 아래 주소에서 설명하는 함수들을 써 보세요. getStyleByClass나 setStyleByClass를 써 보세요.

http://developer.apple.com/internet/web ... tyles.html
kyu419
Posts: 26
Joined: 2005 07 06 00:25 06
Contact:

뭐 저 경우에는...

Post by kyu419 »

뭐 저 경우에는
document.getElementsByTagName("input")[0] 이나
첨자를 1로 바꾸면 둘 중 하나가 선택되겠네요.

document.getElementsByTagName("input") 하시면
태그 이름 'input'을 가진 Element들이 반환됩니다.
첨자로 선택해 주시면 되겠죠.
피핀

Post by 피핀 »

아.. 아이디는 유니크해야되는군요..
답변 감사합니다.
송효진

Post by 송효진 »

id 대신 name 으로 하면 웹표준에 부합되는거겠죠?
<input name="test[]" type="text" />
<input name="test[]" type="text" />
<input name="test[]" type="text" />
<input name="test[]" type="text" />
<input name="test[]" type="text" />

<script>
var test = document.getElementsByName("test[]");
test[2].value = "까꿍!";
</script>
Reidin

name도 XHTML 1.0이상에서는...

Post by Reidin »

name도 XHTML 1.0이상에서는 표준과 멀어집니다. XHTML 1.0 Static에서는 비표준이 되어버리죠.
kwon37xi
Posts: 6
Joined: 2003 12 17 21:40 58

저도 항상 이게 궁금했는데요,

Post by kwon37xi »

저도 항상 이문제가 궁금했습니다.
ID가 Unique 해야 한다는 것은 프로그램짤때 상당한 애로 사항이 될거 같습니다.
JSP의 경우 동일한 name을 가진 input 요청을 한개의 배열로 생성해줍니다.

그런데 name을 사용할 수 없고, id만 써야하고 id는 unique해야 한다는 조건이 걸리게 되면 더이상 배열을 사용할 수 없게 되거든요..

이제 배열이 필요하면 어떻게 해야 하는걸까요?
hyeonseok
해커
해커
Posts: 691
Joined: 2004 08 11 22:14 59
Contact:

Post by hyeonseok »

input은 name이 허용 됩니다.
nowhere0

Post by nowhere0 »

selector는 id, name, class 가 될 수 있습니다.
이 중 name은 form control (input, select 등)에서는 사용해도 됩니다.
form control 이외에서 name은 depricated되었습니다.

현재까지의 해결책은,
getElementsByClass() - 구현되어있지 않으므로 만들어서 사용하시면 됩니다. - 또는 getElementsByAttribute() - 역시 미구현이므로 만들어두고 사용하세요. - 등을 쓰는 것입니다. prototype.js 같은 라이브러리를 쓰신다면 이름은 다르지만 같은 기능이 구현되어 있는 경우가 있으니 레퍼런스를 참고하시구요....

class나 attribute를 selector로 사용하는 것은 약간(?) 편법스럽긴 합니다만, XHTML 2.0에서는 name을 대신할 새로운 selector가 등장하니 좀 기다려야 하겠습니다.
Post Reply

Who is online

Users browsing this forum: No registered users and 3 guests