我需要选择由div
包裹的h2
中的标题,所以我执行类似this.getElementsByTagName('h2')
的操作,其中这是当前div,其中是h2 - 它返回当前h2
1}}元素,但是当我尝试获取innerHTML
或innerText
时,它返回null。我做错了什么?
答案 0 :(得分:3)
它返回当前的h2元素,但是当我试图获取innerHTML或innerText时,它返回null。我做错了什么?
getElementsByTagName
会返回NodeList
,而不是元素。该列表没有innerHTML
,但每个元素都有,例如:
var list = this.getElementsByTagName('h2');
if (list[0]) {
title = list[0].innerHTML;
}
或者,如果您确定它将存在:
title = this.getElementsByTagName('h2')[0].innerHTML;
...但如果没有找到h2,那将引发异常。
答案 1 :(得分:1)
不,this.getElementsByTagName('h2')
返回标记名为h2
的元素数组。
您必须迭代数组并访问所需的正确元素。
答案 2 :(得分:1)
两件事:
您应捕获getElementsByTagName()
返回的节点列表的第一个元素:
var h2 = this.getElementsByTagName('h2')[0];
不同的浏览器使用不同的属性来检索标记内容:
var title = h2.textContent || h2.innerText || null;
答案 3 :(得分:0)
是的,你犯了一个小错误。因为,this.getElementByTagName('h2')
会返回一个(标签)列表。
成为您的代码是[0]
你可以使用
var v= this.getElementsByTagName('h2');
var yourdata=v[0].innerHTML;
答案 4 :(得分:0)
作为其他答案状态,getElementsByTagName返回一个数组。
另一种选择是使用querySelector(仅由现代浏览器支持,因此请先检查您需要支持的内容)
在此页面上运行querySelector,提供以下内容: -
window.document.querySelector('h1').innerHTML //#>
"<a href="/questions/16516643/how-to-select-text-by-tag-name-in-element" class="question-hyperlink">How to select text by tag name in element?</a>"