我正在尝试获取span元素的文本。我使用querySelectorAll
和getElementByClassName
尝试了两种方法,但两者都给出了错误“未捕获的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>
答案 0 :(得分:2)
在查询中包含范围
interstitial = document.querySelectorAll('div.top_bg span');
document.querySelectorAll('div.top_bg')
会返回一个集合,因此您必须选择一个节点,然后应用getElementsByTagName
getElementsByClassName
而非getElementByClassName
注意到Elements
答案 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();