gpt4 book ai didi

javascript - IE8 与所有其他浏览器如何处理不同的 childNode 计数

转载 作者:行者123 更新时间:2023-11-30 13:02:58 25 4
gpt4 key购买 nike

我有很多 div,我想用事件来操作,比如添加/删除类、属性等。我有嵌套元素。起初我使用的是 children 集合,但由于支持不佳,我转向了 childNodes

但是,现在我测试了它,并发出检查 childNodes 数量的警报,我得到了例如在所有其他浏览器中为 39,在 IE8 中为 20。这使得循环不可靠,我需要检查类。我的Javascript:

function removeOnclick(){
var parent = document.getElementById('selections');
var parent_length = parent.childNodes.length;
alert(parent_length);
for (var i=0; i<39; i+=2){
if (parent.childNodes[i].hasAttribute("onclick")) {
parent.childNodes[i].removeAttribute("onclick");
}
}
}

使用这种 HTML 格式,所有浏览器都将它们计为 20(我没有粘贴所有 20 个节点):

<div id="selections"><div id="selection1" class="size" onclick="count(this.id);" onmouseover="onovershowpop(this.id);" onmouseout="onouthidepop(this.id);"><div class="pop">sample</div></div></div>

但是使用这种格式,所有其他浏览器计数 39 个子节点,而 IE8 仍然计数 20:

<div id="selections">  
<div id="selection1" class="size" onclick="count(this.id);" onmouseover="onovershowpop(this.id);" onmouseout="onouthidepop(this.id);">
<div class="pop">sample</div>
</div>
</div>

我是否必须每次都进入一行(div 标签)以使其防弹?

最佳答案

IE8 及以下版本不将空文本节点视为子节点。 .children[] 数组在 IE 5.5 或更早的版本中就已经被支持了,但在 IE8 及以下版本中该数组会计算注释节点的轻微错误。只要元素中没有注释(不应该有,永远不需要 HTML 注释),您就可以可靠地使用 .children[]

关于javascript - IE8 与所有其他浏览器如何处理不同的 childNode 计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16713863/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com