当我在玩Prototypejs javascript库时,我发现了
$$("*").length
< document.getElementsByTagName("*").length
我想知道为什么prototypejs总是给出较低的数字。
在Dr.Molle的回答之后,我尝试了另一个页面,我发现长度差异为3并不总是1.然后我发现
一个。以“!”开头在尖括号之后(总共报告为1)
湾<! - - >评论标签(页面中有2个评论标签)(报告为总共2个)
我不知道“!”也显示为tagName以及其他标记,例如div,span,script等。
以下代码已在IE的开发人员工具中使用
var allEles=document.getElementsByTagName("*");
$A(allEles).each(function(el){
console.log(el.tagName);
});
显示..
LOG: !
LOG: HTML
LOG: HEAD
答案 0 :(得分:3)
在MSIE中看起来(我只看到它发生在那里)getElementsByTagName()也获取<!DOCTYPE>
,但$$()却没有。
如果为DOCTYPE提供了getElementsByTagName('*')
中第一个元素的IE报告,其中tagName !和nodeType 8
关于该nodeType,似乎DOCTYPE被视为注释节点(nodeType 8代表什么),因此主要的错误是MSIE在使用getElementsByTagName()