获得div的第一个孩子

时间:2012-07-13 02:00:30

标签: javascript

我正在尝试获取span元素的文本。我使用querySelectorAllgetElementByClassName尝试了两种方法,但两者都给出了错误“未捕获的TypeError:对象#没有方法'getElementsByTagName'”我如何获取span元素的文本?< / p>

的javascript

var interstitial; 

// 1st attempt
interstitial = document.querySelectorAll('div.top_bg').getElementsByTagName("span");
// 2nd attempt
interstitial = document.getElementByClassName('top_bg')[0].getElementsByTagName("span");

if (interstitial) {
  console.log(interstitial[0].firstChild.innerHTML);
}

HTML

<div class="top_bg">
  <span style="font-size:14px;line-height:30px">The text I am trying to get.</span>
</div>

3 个答案:

答案 0 :(得分:2)

在查询中包含范围

interstitial = document.querySelectorAll('div.top_bg span');

document.querySelectorAll('div.top_bg')会返回一个集合,因此您必须选择一个节点,然后应用getElementsByTagName

getElementsByClassName而非getElementByClassName注意到Elements

http://jsfiddle.net/dRvDt/1/

答案 1 :(得分:0)

您收到错误是因为querySelectorAll返回的对象是NodeList,而NodeLists没有getElementsByTagName方法。你应该做点什么:

  var node, nodeList, spans

  if (document.querySelectorAll) {
    nodeList = document.querySelectorAll('div.top_bg');
    node = nodeList[0];

    if (node) {
      spans = node.getElementsByTagName('span');
    }
  }

spans现在是第一个NodeList的第一个元素中包含的跨度的NodeList(如果有的话)。第一个将在spans[0],依此类推。

答案 2 :(得分:0)

如果你可以使用jquery,你可以轻松查找span html: $( “div.top_bg&GT;跨度”)。则firstChild()的HTML();