2014-09-01 32 views
1
<div class="dates"> 
    <span class="dates>value</span> 
</div> 

我想提取类dates的所有元素,但只有span元素。如何只获取elementsByClassName的特定标签?

我会如何修改以下JS:

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

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

我使用“旧”getElementsByClassName也支持旧版浏览器。

回答

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 
} 
+0

标记名保证为大写,因此与SPAN进行简单比较可以正常工作。 – 2014-09-01 11:31:53

+2

@torazaburo不正确,在XHTML'tagName'中保留大小写 – CodingIntrigue 2014-09-01 11:32:51

1

在现代浏览器中,你可以与querySelectorAll使用CSS选择器:

var elements = document.querySelectorAll('div.dates, span.dates'); 

这是supported通过以下浏览器:

  • 浏览器 - 1
  • 火狐(壁虎) - 3.5( 1.9.1)
  • Internet Explorer - 9和8(仅限CSS2选择器)
  • 歌剧院 - 10
  • Safari浏览器(WebKit的) - 3.2(525.3)
+0

谢谢。我更愿意支持一些较旧的浏览器。 – membersound 2014-09-01 11:28:22

+0

@membersound请记住,旧的IE也不支持'getElementsByClassName'。 – VisioN 2014-09-01 11:29:04

相关问题