gpt4 book ai didi

javascript - IE9 中的 XML DOM childNode 不支持 for..in 语句?

转载 作者:行者123 更新时间:2023-11-28 15:57:12 24 4
gpt4 key购买 nike

我们正在开发一个基于 javascript 的 GIS 应用程序,一切都很顺利,直到有人决定启动 IE9 并在那里也试一试。正如您可能已经猜到的那样,该应用程序崩溃了。

事实证明,由于某些莫名其妙的原因for..in循环无法迭代childNodes:

var xmldoc = new ActiveXObject("Msxml2.DOMDocument.6.0");
xmldoc.loadXML("<i18n><item>one</item><item>two</item></i18n>");

var currentItem = xmldoc.getElementsByTagName("i18n")[0].firstChild;

while (currentItem) {
if (currentItem.nodeType == 1) {
for (var i in currentItem.childNodes) {
console.log(currentItem.childNodes[i]);
}
}
currentItem = currentItem.nextSibling;
}

但是,当上面代码中的内部 for 循环替换为

for (var j = 0; j < currentItem.childNodes.length; j++) {
console.log(currentItem.childNodes[j]);
}

一切都按预期工作 - 它遍历子节点没有任何问题。

虽然我找到了解决方法,但这个问题仍然让我烦恼,因为不清楚为什么会发生这种情况。 MSDN 文档 XMLDocumentfor..in什么也没提到。

这是一个错误,还是 IE 著名的、记录不足的奇怪现象?

最佳答案

嗯,这不是一个错误,因为 DOM spec doesn't define应该有数字属性,只是 [] 脱糖的 item 方法。

根本不要使用for..in

关于javascript - IE9 中的 XML DOM childNode 不支持 for..in 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18315328/

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