2011-01-20 53 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

相關問題