我正在解析来自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将有一个字符串&#34; category&#34;或&#34; newcategory&#34;取决于每个项目的父节点。
我看过Windows&#39; docs,他们说支持parentElement和nodeName访问器,为什么会让IE中的脚本崩溃?
答案 0 :(得分:1)
在对Internet Explorer文档进行一些研究之后,我发现有一个parentNode访问器可以在Firefox / Chrome / Opera和Explorer中使用。
var newCategory = articles[i].parentNode.nodeName;
答案 1 :(得分:0)
我有类似的问题。尝试使用.nodeValue
代替.nodeName
。
var newCategory = articles[i].parentElement.nodeValue;