Page 1 of 1
DOM 표준을 완벽히 지원하지 않는지..
Posted: 2005 05 12 18:44 55
by 손님
namedItem(sName) method를 지원하지 않네요.
지금 체크박스 객체를 통해서 폼 객체를 받아오고 폼 안의
호출한 체크박스와 name(id)이 동일한 체크박스를 배열로 전부 가져오려고 하거든요.
oColls = cbox.form.namedItem(cbox.name); 이 되질 않습니다.
namedItem은 w3c 표준인데 왜 Gecko DOM reference엔 없는거죠?
아 속상해요......................
Posted: 2005 05 12 18:51 39
by 하늘다람쥐
원래 forms로 받는게 맞습니다. form은 원래 여러개가 될 수 있기 때문이죠. form을 사용하시려면 인덱스나 이름을 사용해서 한정시키셔야죠.
그리고 소스를 보니 cbox.form를 사용하셨는데, cbox 객체에 form이 붙어 있을리가 만무하니 document.forms.namedItem()을 사용하셔야 합니다.
허걱, 이 글은 08:20분 글입니다. 잠깐 접속이 안되더니 서버 시간이 이상해졌나봅니다.
<수정>
죄송합니다. 제가 잘 읽어보지도 않고..
cbox가 input 객체가 맞다면 form이 맞습니다. forms가 잘못된 것이죠.
input객체의 form에서는 getElementsByName()를 사용하실 수가 없습니다. 이 함수는 문서 전체(HtmlDocument)에서만 사용할 수 있기 때문이죠. 즉 document.getElementsByName()로 사용하시는게 맞습니다.
Re: DOM 표준을 완벽히 지원하지 않는지.
Posted: 2005 05 12 19:08 39
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 표준을 완벽히 지원하지 않는지.
Posted: 2005 05 12 19:26 00
by 손님
우선 form이 아니라 forms. 오타죠? ^^
form이 맞지 않나요? forms는 form Collection이잖아요.
input 객체에서 form 프로퍼티를 통해 해당 폼객체 리턴받는 것으로 알고 있는데..
getElementsByName 를 사용하시면 됩니다.
이것도 안 먹네요. 엔진상의 문제인지 다음 구문이 안됩니다.
function onClickCBox(cbox) {
cboxs = cbox.form.getElementsByName(cbox.name);
}
Re: DOM 표준을 완벽히 지원하지 않는지.
Posted: 2005 05 12 19:26 15
by 손님
우선 form이 아니라 forms. 오타죠? ^^
form이 맞지 않나요? forms는 form Collection이잖아요.
input 객체에서 form 프로퍼티를 통해 해당 폼객체 리턴받는 것으로 알고 있는데..
getElementsByName 를 사용하시면 됩니다.
이것도 안 먹네요. 엔진상의 문제인지 다음 구문이 안됩니다.
function onClickCBox(cbox) {
cboxs = cbox.form.getElementsByName(cbox.name);
}
Re: DOM 표준을 완벽히 지원하지 않는지.
Posted: 2005 05 12 19:26 57
by 손님
우선 form이 아니라 forms. 오타죠? ^^
form이 맞지 않나요? forms는 form Collection이잖아요.
input 객체에서 form 프로퍼티를 통해 해당 폼객체 리턴받는 것으로 알고 있는데..
getElementsByName 를 사용하시면 됩니다.
이것도 안 먹네요. 엔진상의 문제인지 다음 구문이 안됩니다.
function onClickCBox(cbox) {
cboxs = cbox.form.getElementsByName(cbox.name);
}
Re: DOM 표준을 완벽히 지원하지 않는지.
Posted: 2005 05 12 19:28 34
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);
이걸로는 안되겠습니까? :)
Posted: 2005 05 12 19:54 35
by 하늘다람쥐
휴, 서버시간이 이상하니 답글순서가 꼬여버렸군요.
W3C 표준안에 따라 namedItem()은 HTMLCollection 객체에서만 사용하실 수 있습니다. 하지만, 아시다시피 form 객체는 Collection 객체가 아니기 때문에 아래와 같이 수정을 하셔야 사용하실 수 있습니다. 물론 제가 제시했던 방법도 가능하구요. forms는 Collection 객체이니..
Code: Select all
cbox.form.elements.namedItem(cbox.name)
W3C에서 반환값이 Node로 되어 있어서, 불여우는 가장 처음 찾은 객체 하나를 반환합니다만 IE에서는 NodeList를 반환합니다. 그러니 원래 의도하신 것과는 다르게 작동할 것이란 얘기지요.
Re: DOM 표준을 완벽히 지원하지 않는지.
Posted: 2005 05 13 13:37 50
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 배열로만 이루어진 객체를 받을 일이 없다면 할 필요가 없군요.