用javascript检测HTML DOM中元素的属性
如此多的困惑,如此少的答案。我试图在DOM中循环,通过id查找特定的节点,但是,这段代码有几个问题,对此我没有解释。首先,childNodes列表的长度显示为“5”。两个ul,两个id,如果算上的话…一个是运气 其次,如果(y[i].hasAttribute('id')==true),它将在用javascript检测HTML DOM中元素的属性,javascript,dom,Javascript,Dom,如此多的困惑,如此少的答案。我试图在DOM中循环,通过id查找特定的节点,但是,这段代码有几个问题,对此我没有解释。首先,childNodes列表的长度显示为“5”。两个ul,两个id,如果算上的话…一个是运气 其次,如果(y[i].hasAttribute('id')==true),它将在处消亡。Firebug说这不是一个函数。我没有理由不相信,但不知道为什么不相信 谢谢你的帮助 <div id="list"> <ul id="first"></ul> &l
处消亡。Firebug说这不是一个函数。我没有理由不相信,但不知道为什么不相信
谢谢你的帮助
<div id="list">
<ul id="first"></ul>
<ul id="second"></ul>
</div>
<script>
var comments=document.getElementById('list')
var y=comments.childNodes;
var count=y.length
for(i=0;i<count;i++)
{
document.write(y.length);
if(y[i].hasAttribute('id')===true)
{ document.write('here!');}
}
</script>
var comments=document.getElementById('列表')
var y=comments.childNodes;
变量计数=y.length
对于(i=0;i,childNodes
属性包含DOM中的所有节点,具体地说,它包括文本节点。您有3个节点-div中的换行符/换行符
您可以使用nodeType
属性来测试元素子元素(例如,1
表示元素节点
,3
表示文本节点
).如果您使用像Firebug这样的工具并检查DOM本身,您将看到元素的所有子元素以及.childrends和.childNodes之间的差异
正是通过在DOM中四处搜寻,我发现了为什么有这么多的东西起初看起来是彼此重复的,但绝对不是。Mozilla开发者网站developer.Mozilla.org也提供了丰富的信息。也许可以试试:if(y[I]。nodeType==1&&y[I]。hasAttribute('id')==true){
这样你只检查元素
节点。或者,使用var y=comments.children;
只循环元素
nodex.ah,我明白了,所以这有点类似于必须检查xml,所以你不必阅读空白?非常感谢你的链接!我永远不会解决这个问题。