检查DOM文本节点是否为空的最佳方法是什么?空白我的意思是只有空格,退货,标签等。如果它包含nbsp;那不是空白。
我在做:
element.nodeValue.trim().length != 0
然而,这也摆脱了,我不想要。
(这是Chrome扩展程序所以使用修剪就行了 - 没有IE!)
答案 0 :(得分:3)
我最终更换了用炭,然后修剪。
element.nodeValue.replace(/\u00a0/g, "x").trim().length != 0
答案 1 :(得分:1)
像这样的东西
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
Node.nodeValue
返回或设置当前节点的值。
下表显示了不同元素的返回值: ...
文字:文字节点的内容
Node.textContent
获取或设置节点及其后代的文本内容。
在第一种情况下,我得到div元素的文本内容及其后代。
在第二种情况下,我选择div的第一个文本节点,它恰好是第一个子节点,并获取它的节点值。
答案 2 :(得分:-4)
if ( element.textContent.trim() ) ...
编辑,真的应该说:
if ( element.innerHTML.trim() ) ...