Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Chrome getElementsByTagName返回HTMLCollection vs NodeList_Javascript_Google Chrome_Chromium_Getelementsbytagname - Fatal编程技术网

Javascript Chrome getElementsByTagName返回HTMLCollection vs NodeList

Javascript Chrome getElementsByTagName返回HTMLCollection vs NodeList,javascript,google-chrome,chromium,getelementsbytagname,Javascript,Google Chrome,Chromium,Getelementsbytagname,我发现JavaScript函数getElementsByTagName根据浏览器返回不同的数据。Chrome发回的HTML集合比Firefox、IE或Chrome更长(真的更好,IMO) 我将在下面概述我的发现。我的问题本质上是“为什么Chrome会改变这一点,其他浏览器也会这样做吗(何时?),以及返回的length属性有多可靠?” 比较Chrome(版本34.0.1847.116 m) 与铬相比(版本33.0.1750.152 Ubuntu 13.10(256984))。我确实注意到这个Chr

我发现JavaScript函数getElementsByTagName根据浏览器返回不同的数据。Chrome发回的HTML集合比Firefox、IE或Chrome更长(真的更好,IMO)

我将在下面概述我的发现。我的问题本质上是“为什么Chrome会改变这一点,其他浏览器也会这样做吗(何时?),以及返回的
length
属性有多可靠?”

比较Chrome(版本34.0.1847.116 m) 与铬相比(版本33.0.1750.152 Ubuntu 13.10(256984))。我确实注意到这个Chrome版本有点落后于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>
我得出的结论是,以这种方式使用结果:

var inputs = document.getElementsByTagName('input');
for (x=0; x<inputs.length; x++){
}
var inputs=document.getElementsByTagName('input');
对于开发商提供的(x=0;x):

W3CDOM3核心规范称元素是节点列表 这仅仅是因为有人试图获得“核心” 规范不依赖于当时的“html”规范 DOM4Draft说元素是一个HTMLCollection

Gecko/Firefox当前返回一个节点列表(Bug 162927),但正在启动 对于Gecko/Firefox 19,此方法将返回HTMLCollection(Bug 799464)。Internet Explorer返回HTMLCollection。WebKit返回HTMLCollection Opera还返回一个节点列表,但带有namedItem方法 实现,这使它类似于HTMLCollection


这很有趣,但这是一个问题吗?我几乎没有提出任何问题……但第二段是我的问题,“为什么Chrome会改变这一点,其他浏览器也会这样做吗(何时?),以及返回的长度属性有多可靠?”请注意
for(obj中的attr)
迭代所有属性,甚至是由于原型链而继承的属性。因此建议使用,另请参阅。
var inputs = document.getElementsByTagName('input');
for (x=0; x<inputs.length; x++){
}