0

span 要素のテキストを取得しようとしています。querySelectorAllandを使用して 2 つの方法を試しgetElementByClassNameましたが、どちらも「Uncaught TypeError: Object # has no method 'getElementsByTagName'」というエラーが表示されます。スパン要素のテキストを取得するにはどうすればよいですか?

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

3 に答える 3

2

クエリにスパンを含める

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

document.querySelectorAll('div.top_bg')コレクションを返すので、ノードを選択してから適用する必要がありますgetElementsByTagName

また、その通知されてgetElementsByClassNameいませんgetElementByClassNameElements

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

于 2012-07-13T02:04:25.237 に答える
0

jquery を使用できる場合は、簡単にスパン html を探すことができます: $("div.top_bg>span").firstChild().html();

于 2012-07-13T02:45:49.420 に答える
0

によって返されるオブジェクトは NodeList であり、NodeLists にはメソッドがないため、エラーが発生しquerySelectorAllます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]同様です。

于 2012-07-13T02:26:42.820 に答える