javascript:检查空白textNode
检查DOM文本节点是否为空的最佳方法是什么?我所说的空白是指如果包含nbsp;那么它不是空白的 我在做: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 =
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