我要检查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
。
但这不是。
答案 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"