2012-07-31 63 views
10

我无法获取特定节点的内部文本。我已经添加了我正在使用的示例节点以及我提出的JavaScript。如果我将它登录到控制台,javascript的工作原理就是返回这个<span id="goal_left">3 goals lect</span>。如果我将innerText添加到javascript示例中,它将不会向控制台返回任何内容。任何想法如何获得这个文本?获取节点的内部文本

HTML

<span id="goal_left">3 goals lect</span> 

的javascript:这些例子返回<span id="goal_left">3 goals lect</span>

document.getElementById("goal_left"); 

document.querySelectorAll("span#goal_left")[0]; 

的javascript:这些例子不返回任何

document.getElementById("goal_left").innerText; 

document.querySelectorAll("span#goal_left")[0].innerText; 

回答

26

也许最简单的方法:

document.querySelectorAll("span#goal_left")[0].firstChild.nodeValue; 

但如果你总是希望通过querySelectorAll()返回的第一个节点,你可以简单地使用:

document.querySelector("span#goal_left").firstChild.nodeValue; 

顺便说一句,我想像实现querySelectorAll()任何浏览器可能实现textContent,给出:

document.querySelector("span#goal_left").textContent; 

只是提供了一个跨浏览器的选项:

var textProperty = 'textContent' in document ? 'textContent' : 'innerText'; 
document.getElementById('goal_left')[textProperty] 
+0

http://caniuse.com/#feat=textcontent – Vadorequest 2016-09-15 13:31:11

+0

http://caniuse.com/#feat=innertext 在IE上的实现是一样的他们两个,所以我怀疑这是IE11以下的跨浏览器 – Vadorequest 2016-09-15 13:33:06

2

innerHTML属性可能是你在找什么。它将元素内的HTML代码保存为字符串。

+0

我试过innerHTML,但它没有返回任何东西到控制台 – 2012-07-31 17:10:31

0

的document.getElementById( “goal_left”)的innerHTML替代innerText属性。

另外你可能想用jQuery来操作DOM元素,它更容易,更不容易出错。

+0

我试过innerHTML,但它不会返回任何东西到控制台 – 2012-07-31 17:10:42

+0

它在Chrome上为我工作,尝试var aa = document.getElementById(“goal_left”)。innerHTML ;和console.log(aa); – Drawyan 2012-07-31 17:13:01