DOM 표준을 완벽히 지원하지 않는지..

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

DOM 표준을 완벽히 지원하지 않는지..

Post by 손님 »

namedItem(sName) method를 지원하지 않네요.

지금 체크박스 객체를 통해서 폼 객체를 받아오고 폼 안의
호출한 체크박스와 name(id)이 동일한 체크박스를 배열로 전부 가져오려고 하거든요.

oColls = cbox.form.namedItem(cbox.name); 이 되질 않습니다.
namedItem은 w3c 표준인데 왜 Gecko DOM reference엔 없는거죠?
아 속상해요......................
User avatar
하늘다람쥐
도우미
도우미
Posts: 287
Joined: 2004 08 25 13:02 50
Location: 푸른 하늘
Contact:

Post by 하늘다람쥐 »

원래 forms로 받는게 맞습니다. form은 원래 여러개가 될 수 있기 때문이죠. form을 사용하시려면 인덱스나 이름을 사용해서 한정시키셔야죠.

그리고 소스를 보니 cbox.form를 사용하셨는데, cbox 객체에 form이 붙어 있을리가 만무하니 document.forms.namedItem()을 사용하셔야 합니다.

허걱, 이 글은 08:20분 글입니다. 잠깐 접속이 안되더니 서버 시간이 이상해졌나봅니다.

<수정>

죄송합니다. 제가 잘 읽어보지도 않고.. :oops:
cbox가 input 객체가 맞다면 form이 맞습니다. forms가 잘못된 것이죠.

input객체의 form에서는 getElementsByName()를 사용하실 수가 없습니다. 이 함수는 문서 전체(HtmlDocument)에서만 사용할 수 있기 때문이죠. 즉 document.getElementsByName()로 사용하시는게 맞습니다.
Last edited by 하늘다람쥐 on 2005 05 12 19:34 21, edited 1 time in total.
박민권
해커
해커
Posts: 724
Joined: 2005 01 31 22:33 55
Location: 대한민국
Contact:

Re: DOM 표준을 완벽히 지원하지 않는지.

Post by 박민권 »

손님 wrote:namedItem(sName) method를 지원하지 않네요.

지금 체크박스 객체를 통해서 폼 객체를 받아오고 폼 안의
호출한 체크박스와 name(id)이 동일한 체크박스를 배열로 전부 가져오려고 하거든요.

oColls = cbox.form.namedItem(cbox.name); 이 되질 않습니다.
namedItem은 w3c 표준인데 왜 Gecko DOM reference엔 없는거죠?
아 속상해요......................
우선 form이 아니라 forms. 오타죠? ^^
급하실 수 있으니 namedItem에 대한 부분에 대해서는 일단 미뤄두고
getElementsByName 를 사용하시면 됩니다.
getElementsByName(name) 을 통해서 객체를 가져오실 수 있습니다.

id를 통해서 가져오시려면 getElementById()는 아실거라 봅니다.

저는 namedItem를 써보질 않아서 이 부분에 대해서는 좀 찾아봐야 할 것 같습니다.
손님

Re: DOM 표준을 완벽히 지원하지 않는지.

Post by 손님 »

우선 form이 아니라 forms. 오타죠? ^^
form이 맞지 않나요? forms는 form Collection이잖아요.
input 객체에서 form 프로퍼티를 통해 해당 폼객체 리턴받는 것으로 알고 있는데..

getElementsByName 를 사용하시면 됩니다.
이것도 안 먹네요. 엔진상의 문제인지 다음 구문이 안됩니다.
function onClickCBox(cbox) {
cboxs = cbox.form.getElementsByName(cbox.name);
}
손님

Re: DOM 표준을 완벽히 지원하지 않는지.

Post by 손님 »

우선 form이 아니라 forms. 오타죠? ^^
form이 맞지 않나요? forms는 form Collection이잖아요.
input 객체에서 form 프로퍼티를 통해 해당 폼객체 리턴받는 것으로 알고 있는데..

getElementsByName 를 사용하시면 됩니다.
이것도 안 먹네요. 엔진상의 문제인지 다음 구문이 안됩니다.
function onClickCBox(cbox) {
cboxs = cbox.form.getElementsByName(cbox.name);
}
손님

Re: DOM 표준을 완벽히 지원하지 않는지.

Post by 손님 »

우선 form이 아니라 forms. 오타죠? ^^
form이 맞지 않나요? forms는 form Collection이잖아요.
input 객체에서 form 프로퍼티를 통해 해당 폼객체 리턴받는 것으로 알고 있는데.. :shock:

getElementsByName 를 사용하시면 됩니다.
이것도 안 먹네요. 엔진상의 문제인지 다음 구문이 안됩니다.
function onClickCBox(cbox) {
cboxs = cbox.form.getElementsByName(cbox.name);
} :cry:
박민권
해커
해커
Posts: 724
Joined: 2005 01 31 22:33 55
Location: 대한민국
Contact:

Re: DOM 표준을 완벽히 지원하지 않는지.

Post by 박민권 »

손님 wrote: form이 맞지 않나요? forms는 form Collection이잖아요.
input 객체에서 form 프로퍼티를 통해 해당 폼객체 리턴받는 것으로 알고 있는데.. :shock:
getElementsByName 를 사용하시면 됩니다.
이것도 안 먹네요. 엔진상의 문제인지 다음 구문이 안됩니다.
function onClickCBox(cbox) {
cboxs = cbox.form.getElementsByName(cbox.name);
} :cry:

cbox가 input 객체를 인수로 취하는지 몰랐습니다. :)
form이 맞습니다.
제가 퇴근전에 답다느라 테스트 해보지 않고 달았느데
document.getElementsByName(name); 으로는 잘되는데
다른 객체.getElementsByName(name);는 안되는군요 ㅡㅡ;
잘못된 정보를 드려 죄송합니다.

alert(cbox.form[cbox.name].length);

이걸로는 안되겠습니까? :)
User avatar
하늘다람쥐
도우미
도우미
Posts: 287
Joined: 2004 08 25 13:02 50
Location: 푸른 하늘
Contact:

Post by 하늘다람쥐 »

휴, 서버시간이 이상하니 답글순서가 꼬여버렸군요.

W3C 표준안에 따라 namedItem()은 HTMLCollection 객체에서만 사용하실 수 있습니다. 하지만, 아시다시피 form 객체는 Collection 객체가 아니기 때문에 아래와 같이 수정을 하셔야 사용하실 수 있습니다. 물론 제가 제시했던 방법도 가능하구요. forms는 Collection 객체이니..

Code: Select all

cbox.form.elements.namedItem(cbox.name)
W3C에서 반환값이 Node로 되어 있어서, 불여우는 가장 처음 찾은 객체 하나를 반환합니다만 IE에서는 NodeList를 반환합니다. 그러니 원래 의도하신 것과는 다르게 작동할 것이란 얘기지요.
손님

Re: DOM 표준을 완벽히 지원하지 않는지.

Post by 손님 »

박민권님 하늘다람쥐님 감사합니다.

The FORM element acts as a container for controls

박민권님 말씀대로 form[inputObject.id]를 사용하여 같은 id의 input배열을 받는 걸 해결했습니다.


os = o.form[o.id];
if(os.length > 1) {
for(j = 0; j < os.length; j++) if(os[j].checked) return os[j].value;
return null;
} else {
if(o.checked) return o.value;
return null;
}

form.elements는 정확히 control 배열로만 이루어진 객체를 받을 일이 없다면 할 필요가 없군요.

:D
Post Reply

Who is online

Users browsing this forum: No registered users and 3 guests