【发布时间】:2017-08-17 15:52:10
【问题描述】:
我正在解析来自 XMLHttpRequest 的 XML 文件:
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
loadItems(this);
}
};
xhttp.open("GET", "articles.xml", true);
xhttp.send();
function loadItems(xml) {
var xmlDoc = xml.responseXML;
var items = xmlDoc.getElementsByTagName("item");
for(var i = 0; i < items.length; i++){
//Next line is where the script crashes...
var newCategory = articles[i].parentElement.nodeName;
alert(newCategory);
}
}
我已经找到了我的错误:
var newCategory = articles[i].parentElement.nodeName;
我正在使用的 XML 结构:
<head>
<category>
<item>
<title>
foo
</title>
<contents>
bar
</contents>
</item>
</category>
<newcategory>
<item>
<title>
left
</title>
<contents>
right
</contents>
</item>
</newcategory>
</head>
这似乎适用于除 Internet Explorer 之外的所有其他浏览器,其中脚本在此行静默崩溃。在其他浏览器中,newCategory 将有一个字符串“category”或“newcategory”,具体取决于每个项目的父节点。
我查看了 Windows 的文档,他们说 parentElement 和 nodeName 访问器都受支持,那么为什么会使脚本在 IE 中崩溃?
【问题讨论】:
-
“有效”是什么意思?当它“不起作用”时,你是什么意思?
-
我应该改写一下,我的意思是它成功地完成/执行了脚本中的所有内容。否则,它会在 IE 中在该行静默崩溃。
-
这不足为奇,因为 IE 发明了它 但是首先您需要给我们足够的数据,以便我们可以重现您的错误。 “works”/“doesn't work”,不是我们能看透的。问题的原因可能与使用错误的文档类型一样遥远。
标签: javascript xml xml-parsing