检查是否innerHTMl内部包含任何HTML标记

时间:2018-07-19 05:38:43

标签: javascript jquery html css

如何检查内部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标记必须抛出错误,则可以提供任何帮助

2 个答案:

答案 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

https://jsfiddle.net/n6pe5fx4/15/