我发现JavaScript函数getElementsByTagName根据浏览器返回不同的数据.与Firefox,IE或Chromium相比,Chrome发送回来的HTML集合更长(真的,更好,IMO).
我将在下面概述我的发现.我的问题基本上是"为什么Chrome会改变这种情况,其他浏览器也会这样做(何时?),以及返回length
属性的可靠性如何?"
比较Chrome(版本34.0.1847.116 m)与Chromium(版本33.0.1750.152 Ubuntu 13.10(256984)).我注意到这个Chromium版本有点落后于Chrome(v33 vs v34),因此在Ubuntu Chromum版本中也可能采用这种方式,但它至少帮助我比较了这里发生的事情.
请考虑以下代码块:
<script type='text/javascript'>
function getElements(){
var x=document.getElementsByTagName("input");
console.log(x.length);
console.log(x);
}
</script>
<form>
<input type="text" size="20" id='test1'><br>
<input type="text" size="20" id='test2'><br>
<input type="text" size="20" id='test3'><br><br>
<input type="button" onclick="getElements()" value="How many input elements?">
</form>
Run Code Online (Sandbox Code Playgroud)
在Chromium和其他浏览器中运行上面的结果显示结果显示长度为4,并且返回的数据是索引数组,如:
[input#test1, input#test2, input#test3, input, item: function]
0: input#test1
1: input#test2
2: input#test3
3: input
length: 4
__proto__: NodeList
Chrome会返回类似但扩展的结果数组:
[input#test1, input#test2, input#test3, input, test1: input#test1, test2: input#test2, test3: input#test3, item: function, namedItem: function]
0: input#test1
1: …