javascript - 无法获取[Object Text]的textContent?

时间:2011-01-20 00:48:06

标签: javascript

我希望脚本能够找到它所说的位置,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;

这回来了。在这里撕开我的头发。如果它有助于回答任何问题,如果我只是把它x[i].nextSibling,它就会回来[Object Text]

任何帮助?

3 个答案:

答案 0 :(得分:4)

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

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

这里解释得非常好:JavaScript XML Parsing

答案 1 :(得分:4)

x[i].textContent = "anyword"你的意思是x[i].textContent == "anyword"

答案 2 :(得分: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++)