2014-01-24 138 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

我编辑过,现在链接到小提琴。 –