我有一个 HTML 表格,其中的行与此类似:
<tr>
<td>11/05/2013</td>
<td>CBC W/DIFF</td>
<td> </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'
有什么建议吗?
最佳答案
第一个子节点是一个文本节点,由于您的空格
<td> <content ID="result210">Wbc: 4.5 X10E3/UL</content> </td>
您想要的是获取第一个子元素:
var content = cells[3].children[0].innerHTML;;
更一般地说,大多数时候您不应该使用节点,因为很难确定没有空格或换行符。
另请注意,很少深入研究这样的元素:使用类和基于查询的选择函数,您可以获得更可靠和可读的代码。在这里,由于您有一个 id,您应该简单地执行
var content = document.getElementById("result210").innerHTML;
您的问题在这一点上并不清楚:我希望您在多行上没有具有此类 id 的元素(不能将 id 赋予多个元素)。假设你有一个类,这将是
var content = rows[i].getElementsByClassName("result210").innerHTML;
关于javascript - 如何获取子节点的nodeValue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21337962/