首先,我正在为JavaScript创建一个库,我不能使用jQuery。我正在尝试获取HTML元素的文本内容,而不包含其子元素的文本内容。
innerText和textContent这两个属性都没有给我需要的东西,请帮助。
答案 0 :(得分:5)
您可以使用DOM API作为childNodes和nodeType来解决。
var elChildNode = document.querySelector("#hello").childNodes;
var sChildTextSum = "";
elChildNode.forEach(function(value){
if(value.nodeType === Node.TEXT_NODE) {
console.log("Current textNode value is : ", value.nodeValue.trim());
sChildTextSum += value.nodeValue;
}
});
console.log("All text value of firstChild : ", sChildTextSum);
我创建了一个示例代码,如上所述。
答案 1 :(得分:1)
从以下元素中获取Author's Name
,不包括<span>...
:
<div class="details__instructor">
Author's Name<span ng-show="job_title">, Entrepreneur</span>
</div>
使用childNodes[0]
。例如:
document.querySelector('div.details__instructor').childNodes[0]
结果是一个对象:
"Author's Name"
更新:答案在没有评论的情况下进行了投票。在生产中使用之前,确定这种方法的有效性。
答案 2 :(得分:0)
var mydiv = getElementByID("id");
function Get_text(element) {
var selected = element.cloneNode(true);
var text;
while (selected.firstChild) {
if (selected.firstChild.nodeType == 3) text = selected.firstChild.nodeValue;
selected.removeChild(selected.firstChild);
}
return text;
}
Get_text(mydiv);