JavaScript获取textContent,不包括子项

时间:2016-03-26 05:18:50

标签: javascript html shared-libraries

首先,我正在为JavaScript创建一个库,我不能使用jQuery。我正在尝试获取HTML元素的文本内容,而不包含其子元素的文本内容。

innerText和textContent这两个属性都没有给我需要的东西,请帮助。

3 个答案:

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

我创建了一个示例代码,如上所述。

https://jsfiddle.net/nigayo/p7t9bdc3/

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