如何检查内部HTML是否仅包含文本或内部是否包含任何标签。
例如此处
<a href="#" target="_blank"><img src="/media/1020/phone.png"></a>
此锚标签里面有一个图像标签,在这里我不得不跳过这种情况,其中
<a href="#" target="_blank">Hello</a>
如果此.innerHTML仅返回Hello文本,则上面的代码将返回整个图像标签,例如<img src="/media/1020/phone.png">
。
因此,我只需要直接输入文本,如果其中的任何html标记必须抛出错误,则可以提供任何帮助
答案 0 :(得分:4)
您可以检查父级的每个childNode
是否都是文本节点:
const as = [...document.querySelectorAll('a')];
as.forEach(a => {
console.log(
[...a.childNodes].every(node => node.nodeType === 3)
);
});
<a href="#" target="_blank"><img src="/media/1020/phone.png"></a>
<a href="#" target="_blank">Hello</a>
<a href="#" target="_blank">Hello<img src="/media/1020/phone.png">Hello</a>
答案 1 :(得分:0)
正如您自己所说,我需要直接文本,因此我没有考虑这些标签p,H1等中的文本。这是我的逻辑。
$(document).ready(function(){
$("a").each(function() {
if($(this).text() != '') {
console.log($(this).text());
}
else {
console.log("Error");
}
})
});
JSFiddle