如何只获取getelementsByClassName的特定标签?

时间:2014-09-01 11:26:37

标签: javascript

<div class="dates">
  <span class="dates>value</span>
</div>

我想用类dates提取所有元素,但只提取span元素。

我如何修改以下JS:

var elements = document.getElementsByClassName("dates"); //gets both div + span

最后,我想提取span标签的所有文本值。

我正在使用“旧”getElementsByClassName来支持旧浏览器。

2 个答案:

答案 0 :(得分:2)

如果可以,请使用querySelectorAll

var elements = document.querySelectorAll("span.dates");

否则,您可以使用tagName过滤现有元素:

var elements = document.getElementsByClassName("dates");
for(var i=elements.length; i--;) {
    if(elements[i].tagName.toLowerCase() != "span") continue;
    // Do work
}

答案 1 :(得分:1)

在现代浏览器中,您可以将CSS选择器与querySelectorAll

一起使用
var elements = document.querySelectorAll('div.dates, span.dates');

以下浏览器为supported

  • Chrome - 1
  • Firefox(Gecko) - 3.5(1.9.1)
  • Internet Explorer - 9和8(仅限CSS2选择器)
  • Opera - 10
  • Safari(WebKit) - 3.2(525.3)