x [i] .parentElement.NodeName适用于除explorer之外的所有内容。为什么?

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中崩溃?

+0

你是什么意思它“有效?”当它不工作时,你的意思是什么? –

+0

我应该改写,我的意思是它成功完成/执行脚本中的所有内容。否则它会在该行的IE中静静地崩溃。 – Kral

+0

这几乎不会令人惊讶,因为IE发明了它但首先你需要给我们足够的数据,以便我们可以重现你的错误。 “作品”/“不起作用”,不是我们所能看到的。问题的原因与使用错误的文档类型一样远。 –

做一些研究到Internet Explorer的文档后,我发现有一个parentNode访问,这将在Firefox/Chrome浏览器/ Opera和资源管理工作。

var newCategory = articles[i].parentNode.nodeName; 

我有类似的问题。尝试使用.nodeValue而不是.nodeName

var newCategory = articles[i].parentElement.nodeValue; 
+0

问题是我不想要节点的内容。我想要什么它实际上叫I.E. “类别”或“新类别”。 – Kral

+0

你可以这样做:'articles [i] .parentElement.attributes [0] .nodeName'或'articles [i] .attributes [0] .name' – Techassi