假设我需要从特定的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/
答案 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());