var myform=document.forms.item(0);
var result=document.getElementById('result');
var mystr;
mystr=myform.elements.namedItem("id1").tagName;
result.appendChild(document.createTextNode(mystr));
result.appendChild(document.createElement("br"));
mystr=myform["id2"].tagName;
result.appendChild(document.createTextNode(mystr));
在W3C中,一般通过属性返回的元素集合叫HTMLCollection,如document.forms.通过方法返回的叫Node List,如getElementByTagName.
HTMLCollection可以通过item方法用索引访问,索引按深度优先排序,通namedItem方法按id访问(HTML4.01支持id和name,xhtml只有id)。而Node List只能通过item来访问
而实际中所有浏览器HTMLCollection的item方法既可以用id访问又可以用name访问
对于Node List,只有Chrome在XHTML下不能通过namedItem和name访问元素(用item仍然支持id访问)。其它浏览器与HTMLCollection访问方法完全相同
至于数组语法访问HTMLCollection和Node List未见W3C有相关说明,不过从实现上看数组访问的结果与item访问的结果完全一样,也可能数组是item和namedItem的合集。
建议不要在任何时候用name访问集合中的元素。用item时也不要用id和name访问元素,当用id访问元素时要用数组语法或namedItem方法(仅HTMLCollection)。不要用id和name访问Node List
var myform=document.getElementsByTagName("input");
var result=document.getElementById('result');
var mystr;
mystr=myform[0].tagName;
result.appendChild(document.createTextNode(mystr));
result.appendChild(document.createElement("br"));
mystr=myform.item(1).tagName;
result.appendChild(document.createTextNode(mystr));