javascript:检查空白textNode

时间:2013-04-30 21:53:03

标签: javascript dom

检查DOM文本节点是否为空的最佳方法是什么?空白我的意思是只有空格,退货,标签等。如果它包含nbsp;那不是空白。

我在做:

element.nodeValue.trim().length != 0

然而,这也摆脱了,我不想要。

(这是Chrome扩展程序所以使用修剪就行了 - 没有IE!)

3 个答案:

答案 0 :(得分:3)

我最终更换了用炭,然后修剪。

element.nodeValue.replace(/\u00a0/g, "x").trim().length != 0

基于Replacing   from javascript dom text node

答案 1 :(得分:1)

像这样的东西

HTML

<div id="test1">        
    </div>
<div id="test2">    &nbsp;      
    </div>

的Javascript

var test1 = document.getElementById("test1");
var test2 = document.getElementById("test2");

function escapeHTML(str) {
    var pre = document.createElement('pre');
    pre.appendChild(document.createTextNode(str));
    return pre.innerHTML;
}

console.log(escapeHTML(test1.textContent).trim().length === 0);
console.log(escapeHTML(test2.textContent).trim().length === 0);

jsfiddle

输出

true
false

或者使用nodeValue

的Javascript

var test1 = document.getElementById("test1").firstChild;
var test2 = document.getElementById("test2").firstChild;

function escapeHTML(str) {
    var pre = document.createElement('pre');
    pre.appendChild(document.createTextNode(str));
    return pre.innerHTML;
}

console.log(escapeHTML(test1.nodeValue).trim().length === 0);
console.log(escapeHTML(test2.nodeValue).trim().length === 0);

输出

true
false

jsfiddle

请参阅Node.nodeValueNode.textContent

Node.nodeValue

  

返回或设置当前节点的值。

     

下表显示了不同元素的返回值:   ...

     

文字:文字节点的内容

Node.textContent

  

获取或设置节点及其后代的文本内容。

在第一种情况下,我得到div元素的文本内容及其后代。

在第二种情况下,我选择div的第一个文本节点,它恰好是第一个子节点,并获取它的节点值。

答案 2 :(得分:-4)

if ( element.textContent.trim() ) ...
编辑,真的应该说:

if ( element.innerHTML.trim() ) ...