首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >javascript:检查空白textNode

javascript:检查空白textNode
EN

Stack Overflow用户
提问于 2013-05-01 05:53:03
回答 3查看 3.8K关注 0票数 5

检查DOM文本节点是否为空的最佳方法是什么?我所说的空白仅指空格、回车符、制表符等。如果它包含nbsp;,则它不是空白。

我在做:

代码语言:javascript
复制
element.nodeValue.trim().length != 0

然而,这也摆脱了nbsp;,这是我不想要的。

(它是针对Chrome扩展的,所以使用trim是可以的--没有IE!)

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-05-01 14:04:59

我最终用一个字符替换了nbsp;,然后进行了修剪。

代码语言:javascript
复制
element.nodeValue.replace(/\u00a0/g, "x").trim().length != 0

基于Replacing   from javascript dom text node

票数 3
EN

Stack Overflow用户

发布于 2013-05-01 06:16:46

像这样的东西

HTML

代码语言:javascript
复制
<div id="test1">        
    </div>
<div id="test2">    &nbsp;      
    </div>

Javascript

代码语言: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

输出为

代码语言:javascript
复制
true
false

或使用nodeValue

Javascript

代码语言: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);

输出

代码语言:javascript
复制
true
false

jsfiddle

请参阅Node.nodeValueNode.textContent

Node.nodeValue

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

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

Text:文本节点的内容

Node.textContent

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

在第一个例子中,我得到了div元素及其后代的文本内容。

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

票数 2
EN

Stack Overflow用户

发布于 2013-05-01 05:55:00

代码语言:javascript
复制
if ( element.textContent.trim() ) ...

编辑,真正想说的是:

代码语言:javascript
复制
if ( element.innerHTML.trim() ) ...
票数 -4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16309574

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档