javascript - 如何获取子节点的nodeValue

标签 javascript html dom

我有一个 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;;

Demonstration

更一般地说,大多数时候您不应该使用节点,因为很难确定没有空格或换行符。

另请注意,很少深入研究这样的元素:使用类和基于查询的选择函数,您可以获得更可靠和可读的代码。在这里,由于您有一个 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/

相关文章:

javascript - JavaScript 中是否有任何方法可以使用字符串格式的名称来调用在另一个函数范围内声明的函数?

javascript - 使数据表响应

javascript - 使用javascript在imacros中提示超时

html - 在悬停另一个 div 时更改多个 div

javascript - 使用 Node js Promise 链的 For 循环

html - 为什么要在 HTML/CSS 中区分 ID 和类?

html页面中的javascript脚本 block 在标题中工作,但不适用于外部文件

javascript - 在 DOM 字符串中使用变量

javascript - 在 IE : alternative for setAttribute method 中动态设置输入元素的 id 属性

JQuery淡出后删除DOM元素