2011-01-20 108 views
4

我想让脚本找到它在xml中的anyword(在标签内),然后停下来。以下完成罚款。javascript - 无法获取[Object Text]的textContent?

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'后设置'变量'到下一个节点。所以我尝试了这样的事情,它回来了集合中的最后一个元素,而不是下一个元素。

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]

任何帮助吗?

+0

[见这个答案得到objext文本] [1] [1]:http://stackoverflow.com/questions/1646571/getting-the-value-of-text-from- a-text-object-in-javascript – 2013-06-28 07:00:20

回答

4

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

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; 
     } 
    } 

余did't详细看看但这似乎奇怪对我说:

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

你试过

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

感谢您指出这一点,它更有意义..但一切似乎仍然行动相同 – Shawn 2011-01-20 01:12:06

3

这是人的通病。现代浏览器(基本上除IE之外的所有浏览器)都会在元素之间添加文本节点。这些文本节点只包含空格,并且没有很多用处。使用此功能查找下一个节点。

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

它被解释相当不错的位置:JavaScript XML Parsing

+0

感谢的人。哪个变量会在我的原始脚本中替换节点?它会变化吗? – Shawn 2011-01-20 02:00:36

+0

将x [i]传递给函数以获取下一个兄弟。 – Hemlock 2011-01-20 02:20:37

相关问题