【问题标题】:x[i].parentElement.NodeName works on everything but explorer. Why?x[i].parentElement.NodeName 适用于除资源管理器之外的所有内容。为什么?
【发布时间】: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


【解决方案1】:

在对 Internet Explorer 文档进行一些研究后,我发现有一个 parentNode 访问器可以在 Firefox/Chrome/Opera 和 Explorer 中工作。

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 问题是我不想要节点的内容。我想要它实际上称为 I.E. “类别”或“新类别”。
    • 您可以执行以下操作:articles[i].parentElement.attributes[0].nodeNamearticles[i].attributes[0].name
    猜你喜欢
    • 1970-01-01
    • 2016-05-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多