繁体   English   中英

如何获得子节点的nodeValue

[英]how to get nodeValue of child node

我有一个HTML表,其中的行与此类似:

    <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' 

有什么建议么?

第一个子节点是一个文本节点,因为您在

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM