x [i] .parentElement.NodeName适用于除explorer之外的所有内容。为什么?
问题描述:
我通过一个XML文件从一个XMLHttpRequest解析:x [i] .parentElement.NodeName适用于除explorer之外的所有内容。为什么?
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中崩溃?
答
做一些研究到Internet Explorer的文档后,我发现有一个parentNode访问,这将在Firefox/Chrome浏览器/ Opera和资源管理工作。
var newCategory = articles[i].parentNode.nodeName;
你是什么意思它“有效?”当它不工作时,你的意思是什么? –
我应该改写,我的意思是它成功完成/执行脚本中的所有内容。否则它会在该行的IE中静静地崩溃。 – Kral
这几乎不会令人惊讶,因为IE发明了它但首先你需要给我们足够的数据,以便我们可以重现你的错误。 “作品”/“不起作用”,不是我们所能看到的。问题的原因与使用错误的文档类型一样远。 –