【发布时间】:2016-07-13 21:58:03
【问题描述】:
首先,我正在为 JavaScript 创建一个库,但我不能使用 jQuery。我正在尝试获取没有其子元素文本内容的 HTML 元素的文本内容。
innerText 和 textContent 这两个属性都没有给我需要的东西,请帮忙。
【问题讨论】:
标签: javascript html shared-libraries
首先,我正在为 JavaScript 创建一个库,但我不能使用 jQuery。我正在尝试获取没有其子元素文本内容的 HTML 元素的文本内容。
innerText 和 textContent 这两个属性都没有给我需要的东西,请帮忙。
【问题讨论】:
标签: javascript html shared-libraries
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);
【讨论】:
Node.TEXT_NODE。在 DOM 中销毁这些元素有什么意义?这并没有比the accepted answer 增加解释或明显的好处。
从以下元素中获取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"
更新:答案被否决,没有评论。在生产中使用之前,请确定此方法的有效性。
【讨论】:
您可以使用 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);
我创建了上面的示例代码。
【讨论】: