javascript--无法获取[对象文本]的textContent?

问题描述 投票:4回答:3

我希望脚本在xml(当然在标记内)中找到它说的“ anyword”的位置,然后停止。下面做到了。

 var xmlDoc = loadXMLDoc("nhl.xml");
    var x = xmlDoc.getElementsByTagName("tagname");
    for (var i=0;i<=x.length;i++){
        if (x[i].textContent = "anyword") {
            var variable = x[i].textContent;
        }
    }

但是我想更进一步,找到“ anyword”后就可以将“ variable”设置到下一个节点。因此我尝试了类似的操作,它返回了集合中的最后一个元素,而不是下一个。

var xmlDoc = loadXMLDoc("nhl.xml");
    var x = xmlDoc.getElementsByTagName("tagname");
    for (var i=0;i<=x.length;i++){
        if (x[i].textContent = "anyword") {
            var variable = x[i+1].textContent;
        }
    }

所以我再次编辑了最后一行并使其成为

var variable = x[i].nextSibling.textContent;

此返回null。在这里扯我的头发。如果它有助于回答任何问题,如果我把它x[i].nextSibling放回[Object Text]

有帮助吗?

javascript
3个回答
4
投票

x[i].textContent = "anyword"表示,您是指x[i].textContent == "anyword"吗?


4
投票

这是人们常见的问题。现代浏览器(除IE外,基本上所有其他浏览器)都会在元素之间添加文本节点。这些文本节点仅包含空格,并没有太多用处。使用此功能查找下一个节点。

function nextSibling(node) {
  do {
    node = node.nextSibling;
  } while (node && node.nodeType != 1) ;
  return node
}

这里得到很好的解释:JavaScript XML Parsing


0
投票
var xmlDoc = loadXMLDoc("nhl.xml");
    var x = xmlDoc.getElementsByTagName("tagname");
    for (var i=0;i<=x.length;i++){
        if (x[i].textContent = "anyword") {
            var variable = x[i+1].textContent;
        }
    }

我没有详细介绍,但是这对我来说似乎很奇怪:

for (var i=0;i<=x.length;i++)

您是否尝试过

for (var i=0;i<x.length;i++)
© www.soinside.com 2019 - 2024. All rights reserved.