无法使用Javascript检索文本

时间:2015-07-06 16:09:06

标签: javascript html

我无法检索HTML元素的文本。



var text_element = document.getElementById("details").getElementsByTagName("h3");
var text = text_element.innerText;
console.log(text_element);
console.log(text);

<div id="details">
  <h3>Summary for</h3>
</div>
&#13;
&#13;
&#13;

当我为text_element拨打控制台电话时,我实际上可以看到h3对象信息,但当我拨打text时,我会收到undefined

如果我将JS更改为var text = text_element.innerHTML;,我会得到相同的结果undefined

我是不是要在h3元素中获取文字,摘要而不是undefined

任何人都可以告诉我我做错了什么以及我需要做些什么来修复它?

我没有使用jQuery,这是严格纯粹的Javascript。

4 个答案:

答案 0 :(得分:4)

方法.getElementsByTagName("h3")返回一个NodeList(或现在,在Firefox中为HTMLCollection),而不是Element,而NodeList原型没有innerText属性。

您可以使用其索引获取节点列表的第一个元素:

var text_elements = document.getElementById("details").getElementsByTagName("h3");
var text = text_elements[0].innerText;
console.log(text_elements[0]);
console.log(text);
<div id="details">
  <h3>Summary for</h3>
</div>

注意:NodeList和HTMLCollection对象不是Array,即使它们是类似于数组的对象(如arguments)。 You can read more about Array-like objects

答案 1 :(得分:0)

你在这里,更快:

alert(document.querySelector('h3').innerText);
<div id="details">
  <h3>Summary for</h3>
</div>

希望这有帮助。

答案 2 :(得分:0)

方法:1 id

进行访问
var text_element = document.getElementById("details");
var text = text_element.innerText;
console.log(text_element);
console.log(text);

方法:2 getElementsByTagName("h3")进行访问。

var text_elements = document.getElementById("details").getElementsByTagName("h3");
var text = text_elements[0].innerText;
console.log(text_elements[0]);
console.log(text);

MDN - Element.getElementsByTagName

  

Element.getElementsByTagName()方法返回具有给定标记名称的元素的实时HTMLCollection。搜索指定元素下面的子树,不包括元素本身。返回的列表是实时的,这意味着它会自动使用DOM树更新自己。因此,不需要使用相同的元素和参数多次调用Element.getElementsByTagName()。

答案 3 :(得分:0)

当你通过这个方法获得标签的文本/内容“getElementsByTagName()” - 然后它返回一个元素的子元素的集合,其中包含指定的标签名称,或者可以说是HTML的集合,你可以通过给出索引来获得。

实施例

document.getElementsByTagName("h3"); - [<h3> Summary For </h3>]
document.getElementsByTagName("h3")[0]; - [<h3> Summary For </h3>]
document.getElementsByTagName("h3")[0].innerHTML; - Summary For

在你的例子中

var text_element = document.getElementById("details").getElementsByTagName("h3")[0];
var text = text_element.innerHTML;    
alert(text); // Summary For