如何检查html元素是否包含其自身的文本(包含textNode)

时间:2018-07-04 10:11:57

标签: javascript html dom

我要检查html元素是否包含其自己的文本。

示例
<div>Text<tag></tag>Text</div><div>Text</div>

有些不适合的东西 <div><tag></tag><p></p></div>

我的代码段是

flag = false;
for ( var j = 0; j < item.childNodes.length; j ++){
    if(item.childNodes[j].tagName == ""){
        flag = true;
    }
}

但是它不起作用,有人可以帮我吗?

我期望的是
<div>Text<tag></tag>Text</div>的子节点是Text<tag></tag>Text。 但这不是。

2 个答案:

答案 0 :(得分:6)

如果要检测文本节点子级,请检查 nodeType 是否为TEXT_NODE而不是 tagName 是否为空字符串:

var flag = Array.from(item.childNodes).some(child => child.nodeType === child.TEXT_NODE);

答案 1 :(得分:0)

您可以结合使用String.trim()和元素的.textContent属性。

HTML

<div>
    <p>hello</p>
</div>

JS

String.trim(document.querySelector('div').textContent); //"hello"