检查 DOM 文本节点是否为空白的最佳方法是什么?空白是指只有空格、回车符、制表符等。如果它包含 nbsp; 那么它不是空白的。
我在做:
element.nodeValue.trim().length != 0
但是,这也摆脱了我不想要的 nbsp;。
(它用于 Chrome 扩展,因此可以使用 trim - 没有 IE!)
检查 DOM 文本节点是否为空白的最佳方法是什么?空白是指只有空格、回车符、制表符等。如果它包含 nbsp; 那么它不是空白的。
我在做:
element.nodeValue.trim().length != 0
但是,这也摆脱了我不想要的 nbsp;。
(它用于 Chrome 扩展,因此可以使用 trim - 没有 IE!)
我最终更换了 nbsp;用一个字符然后修剪。
element.nodeValue.replace(/\u00a0/g, "x").trim().length != 0
像这样的东西
HTML
<div id="test1">
</div>
<div id="test2">
</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);
输出是
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
请参阅Node.nodeValue和Node.textContent
节点.nodeValue
返回或设置当前节点的值。
下表显示了不同元素的返回值: ...
text:文本节点的内容
节点文本内容
获取或设置节点及其后代的文本内容。
在第一种情况下,我得到了 div 元素及其后代的文本内容。
在第二种情况下,我选择 div 的第一个文本节点,它恰好是第一个子节点,并获取它的节点值。
if ( element.textContent.trim() ) ...
编辑,真的是想说:
if ( element.innerHTML.trim() ) ...