有什么方法可以检查文本是否在html标签内?

时间:2018-12-15 02:02:16

标签: javascript html tags

假设我需要从特定的html标记中提取每个文本:

HTML:

<div id="container">
<div id="subject">

<span><a></a></span>

</div>
</div>

var subject = document.getElementById('subject').innerHTML;
console.log(subject); // <span><a></a></span>

所以我们里面没有任何文本,但是如果有-如何检查特定html元素内<>标签之外是否有文本?

提琴以提供更好的可视化效果-http://jsfiddle.net/kxarc6o3/

2 个答案:

答案 0 :(得分:2)

最好的方法是使用innerText,innertHTML在标签内为您提供全部内容,包括其所持有的html标签以及其子代或后代所拥有的html。 innnerText始终会为您提供其中包含的文本(只有元素而不是其后继)。

在您的示例中

<span id ='spanid'>hello<a>hi</a></span>

document.getElementbyID('spanid')。innerText仅会以字符串形式打个招呼

而document.getElementbyID('spanid')。innerHTML将以字符串格式给出其中包含的整个hmtl(此处为hello<a>hi</a>)。

要获取span标记内所有可能元素的innerText,您需要使用递归,没有其他方法,因为我们不知道它有多少个子代或后代。

printInnerText(ele){
 if(ele.childNodes.length >= 1){
    children = ele.childNodes;
    for(var i=0;i<children.length;i++)
     printInnerText(children[i])
 }else{
    console.log(ele.innerText);
 }
}

答案 1 :(得分:0)

您可以像这样使用HTML DOM innerHTML属性:

if(document.getElementById("container").innerHTML.length > 0)
    console.log(document.getElementById("container").innerHTML);

或使用Jquery:

if($("#container").html().length > 0)
    console.log($("#container").html());