javascript:检查空白textNode

javascript:检查空白textNode,javascript,dom,Javascript,Dom,检查DOM文本节点是否为空的最佳方法是什么?我所说的空白是指如果包含nbsp;那么它不是空白的 我在做: element.nodeValue.trim().length != 0 然而,这也消除了nbsp;,这是我不想要的 (这是一个镀铬的扩展,所以使用修剪是可以的-没有IE!) 编辑,真正的意思是: if ( element.innerHTML.trim() ) ... 像这样的 HTML 在 输出为 true false 或者是没有价值的 Javascript var test1 =

检查DOM文本节点是否为空的最佳方法是什么?我所说的空白是指如果包含nbsp;那么它不是空白的

我在做:

element.nodeValue.trim().length != 0
然而,这也消除了nbsp;,这是我不想要的

(这是一个镀铬的扩展,所以使用修剪是可以的-没有IE!)

编辑,真正的意思是:

if ( element.innerHTML.trim() ) ...
像这样的

HTML

输出为

true
false
或者是没有价值的

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

看到和

Node.nodeValue

返回或设置当前节点的值

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

Text:文本节点的内容

Node.textContent

获取或设置节点及其子体的文本内容

在第一种情况下,我获取div元素及其子体的文本内容


在第二种情况下,我选择div的第一个文本节点,它恰好是第一个子节点,并获取它的节点值;用木炭,然后修剪

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

基于

,功能上与OP发布的内容相同。只需添加一个不间断空格的检查nbsp;出现在nodeValue中,那么问题出在哪里?如果唯一的阻塞是不间断的空格,请执行以下操作:
element.nodeValue.indexOf(“\u00A0”)>-1 | | element.nodeValue.trim().length>0
您正在测试一个元素。OP正在测试一个文本节点。是的,可以。我想知道它是否适用于所有空白HTML实体。我相信它应该(不是全部测试),但测试起来很容易,只需将JSFIDLE分叉并将它们放在那里。
true
false
element.nodeValue.replace(/\u00a0/g, "x").trim().length != 0