2014-01-24 181 views
0

我有類似這樣的一個HTML錶行的nodeValue:如何讓孩子節點

<tr> 
     <td>11/05/2013</td> 
     <td>CBC W/DIFF</td> 
     <td>&#xA0;</td> 
     <td> <content ID="result210">Wbc: 4.5 X10E3/UL</content> </td> 
     <td>Final</td> 
    </tr> 

我想獲得的nodeValue「WBC:4.5 X10E3/UL」

這裏是我的JavaScript代碼至今:

var table = section.getElementsByTagName("table")[0]; 
var tablebody = table.getElementsByTagName("tbody")[0]; 
var rows = tablebody.getElementsByTagName("tr"); 
for (i=0; i<rows.length; i++) { 
    var cells = rows[i].getElementsByTagName("td"); 
    var date  = cells[0].childNodes[0].data; 
    var panel  = cells[1].childNodes[0].data; 
    var result  = cells[2].childNodes[0].data; 
    var description = cells[3].childNodes[0]; 
    var content  = description.firstChild.nodeValue; //SCRIPT5007: Unable to get property 'nodeValue' of undefined or null reference 
    var status  = cells[4].childNodes[0].data; 
    console.log(date +" " +panel +" " +result +" " +content +" " +status); 
} 

報告的錯誤是「SCRIPT5007:無法獲取的未定義或空引用財產‘的nodeValue’」

如果我註釋說明和內容部分,其他字段都會正確報告,所以我知道我很接近。 我也試過:

var content = description.firstChild.firstChild.nodeValue; //SCRIPT5007: Unable to get property 'firstChild' of undefined or null reference 

var content = description.getElementsByTagName("content").childNodes[0].nodeValue; //SCRIPT438: Object doesn't support property or method 'getElementsByTagName' 

有什麼建議嗎?

+2

'的document.getElementById( 「result210」)的innerHTML;'應該工作,雖然... –

+0

你也可以試試:'VAR含量= description.getElementsByTagName(」內容')'... –

回答

3

第一個子節點是一個文本節點,由於你在

<td> <content ID="result210">Wbc: 4.5 X10E3/UL</content> </td> 

你想要的是得到的第一個子元素空間:

var content  = cells[3].children[0].innerHTML;; 

Demonstration

更普遍,大多數時候你不應該使用節點,因爲很難確定沒有空間或新線。

還要注意,很少涉及到這樣的元素:使用類和基於查詢的選擇函數,可以獲得更可靠和可讀的代碼。在這裏,你有一個id,你應該簡單地做

var content = document.getElementById("result210").innerHTML; 

你的問題是不是在這一點上明確:我希望你不要有這種標識的元素在多個行(一個ID可以」給予多於一個的元素)。假設你有一個類來代替,這將是

var content = rows[i].getElementsByClassName("result210").innerHTML; 
+0

var content = description.children [0] .nodeValue; //報告「SCRIPT5007:無法獲取未定義或空引用的屬性'0'」。不幸的是,如果「result210」對於每個數據集都是一致的,則無法提前知道。 – user3217883

+0

var content = cells [3] .children [0] .nodeValue; //報告「SCRIPT5007:無法獲取屬性'0'的未定義或空引用」 – user3217883

+0

我編輯過,現在鏈接到小提琴。 –