【问题标题】:Javascript nodeValue returns nullJavascript nodeValue 返回 null
【发布时间】:2011-04-28 00:25:51
【问题描述】:

标题应该很好地描述了我的问题。这是我的代码。

<div id="adiv"><text>Some text</text></div>    
<script type="text/javascript">
function vb(){
alert(document.getElementById("adiv").firstChild.nodeValue); //returns null
}
</script>
<input type="button" onclick="vb();" value="get"/>

问题出在哪里..?

【问题讨论】:

    标签: javascript null nodevalue


    【解决方案1】:

    为了得到元素节点的[合并]文本内容:

    function vb(){
    var textnode = document.getElementById("adiv").firstChild;
    alert(textnode.textContent || textnode.innerText);
    }
    

    为了获取文本节点的文本内容:

    function vb(){
    alert(document.getElementById("adiv").firstChild.firstChild.nodeValue);
    }
    

    【讨论】:

    • 谢谢..实际上双胞胎有点奇怪。
    • 这并不奇怪... firstChild 是 的 firstChild 是 textnode 本身。
    • 节点内的文本是文本节点。例如,对于像 &lt;foo&gt;\n&lt;bar&gt;baz&lt;/bar&gt;\n&lt;/foo&gt; 这样的格式化文档,foo 节点的 childNodes 属性返回 NodeList [ #text "\n", &lt;bar&gt;, #test "\n" ]
    【解决方案2】:

    您缺少第一个孩子:

    alert(document.getElementById("adiv").firstChild.firstChild.nodeValue);
    

    (我知道这听起来很奇怪,但这就是文本节点的工作方式)

    【讨论】:

    • @user1473206 你有 jsfiddle 或类似的东西来测试这个吗?
    • 我在ie8和9上试过这个,nodeValue返回为Null
    【解决方案3】:

    &lt;text&gt; 节点在 IE 7 中不受支持。

    【讨论】: