如何在元素中按标签名称选择文本?

时间:2013-05-13 07:15:44

标签: javascript

我需要选择由div包裹的h2中的标题,所以我执行类似this.getElementsByTagName('h2')的操作,其中这是当前div,其中是h2 - 它返回当前h2 1}}元素,但是当我尝试获取innerHTMLinnerText时,它返回null。我做错了什么?

5 个答案:

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

两件事:

  1. 您应捕获getElementsByTagName()返回的节点列表的第一个元素:

    var h2 = this.getElementsByTagName('h2')[0];
    
  2. 不同的浏览器使用不同的属性来检索标记内容:

    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>"

querySelector

querySelectorAll