일단 document.all은 비표준이다.
다른브라우져는 모르지만 파이어 폭스에선 이구조때문에 웹페이지에 알럿이떠서 접근을 할수없다.
document.all 은 IE에서만 동작한다.
같은 name을 가진 input이 여러개 있을 때 document.form0.inputName.length 이런 식으로 사용하는 경우도 있다.
이 또한 IE에서만 동작한다.
w3c 스펙에 나와있는 document.getElementById 나 document.getElementsByName을 사용하여야 한다.
1. getElementById는 element를 반환한다. 다음과 같이 사용한다.
var ele = document.getElementById("testID");
alert(ele.value);
2. getElementsByName은 nodelist를 반환한다. 다음과 같이 사용한다.
var nodelist = document.getElementsByName("testName");
for ( var i=0; i<nodelist.length; i++ ) {
alert(nodelist.item(i).value);
}
참고 : http://developer.mozilla.org/en/docs/DOM:document
Spec : http://www.w3.org/TR/DOM-Level-2-HTML/html.html#ID-1006298752
http://forums.mozilla.or.kr/viewtopic.php?t=580&highlight=document.all
웹사이트에서 버튼이 동작 되지 않는 경우 대부분 Javascript의 객체를 MSDOM에서 사용하는 document.all을 사용하기 때문에 그렇습니다. 자바스크립트 디버거를 통해 소스를 보았을 때 document.all 이 들어 있는 경우 document.all 대신 W3C DOM의 오브젝트 판별법을 사용하도록 웹사이트 관리자에게 알려주셔야 합니다.
<b>document.all[objectID] -> document.getElementById("objectID")</b>
혹시 거기에서 MS IE4 때문에 getElementById를 쓸 수 없다고 하면 getObject()를 아래처럼 정의한 후에 쓸 수 있다고 알려 주십시오.
<blockquote>function getObject(objectId) {
// checkW3C DOM, then MSIE 4, then NN 4.
//
if(document.getElementById && document.getElementById(objectId)) {
return document.getElementById(objectId);
}
else if (document.all && document.all(objectId)) {
return document.all(objectId);
}
else if (document.layers && document.layers[objectId]) {
return document.layers[objectId];
} else {
return false;
}
즉, 다음처럼 하면 됩니다.
getObject('sendbn').style.visibility="hidden";</blockquote>
getObject는 http://www.orient-express.com/js/layers.inc 에 있습니다.
혹은 다음에 있는 'x library'를 쓰는 것도 좋은 방법입니다.
1. http://luke1021.tistory.com/entry/documentall-%EB%AC%B8%EC%A0%9C-%ED%95%B4%EA%B2%B0%EB%B2%95
2. http://www.okjsp.pe.kr/seq/51218