我无法检索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;
当我为text_element
拨打控制台电话时,我实际上可以看到h3
对象信息,但当我拨打text
时,我会收到undefined
。
如果我将JS更改为var text = text_element.innerHTML;
,我会得到相同的结果undefined
。
我是不是要在h3
元素中获取文字,摘要而不是undefined
?
任何人都可以告诉我我做错了什么以及我需要做些什么来修复它?
我没有使用jQuery,这是严格纯粹的Javascript。
答案 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