Javascript:如何通过ID获取多个span元素?

时间:2014-01-22 14:35:32

标签: javascript html

我有几个span元素,它们以相同的ID开头,如下所示......

<span id="graph_machine" 
<span id="graph_human" 
<span id="graph_custom" 

我想在我的Javascript函数中将这3个Span元素作为数组访问..

var elems = document.getElementsById(“graph *”);

但getElementsById不支持返回多个值。有什么建议?也许使用不同的函数和一些通配符?

感谢。

5 个答案:

答案 0 :(得分:9)

使用document.querySelectorAll

var elems = document.querySelectorAll("[id^=graph]");

这将返回任何具有id属性的元素的节点列表,其值以“graph”开头。

答案 1 :(得分:0)

您可以获得所有跨度,然后单独检查每个ID:

var spans = document.getElementsByTagName("span");
var graphSpans = [];
for (var i = 0; i < spans.length; i++) {
    if (spans[i].id.substring(0,5) === "graph") {
        graphSpans.push(spans[i]);
    }
}

http://jsfiddle.net/Sp6sp/

答案 2 :(得分:0)

尝试获取所有跨度ID,然后检查跨度ID是否以“graph”

开头
var spans = document.getElementsByTagName("span");
var graphSpans = new Array();
for (var i = 0; i <= spans.length; i++) {
   if (spans.id.startsWith("graph")) {
      graphSpans.push(spans[i]);
   }
}

由于startWith方法在Javascript中不可用,因此您需要在文档准备就绪后将其添加到原型中。

jQuery(document).ready(function() {
if (typeof String.prototype.startsWith != 'function') {
     // see below for better implementation!
        String.prototype.startsWith = function (str){
            return this.indexOf(str) == 0;
        };
    }
}

答案 3 :(得分:0)

如果您使用的是jQuery,可以使用$( "span[id^='graph_']" )

答案 4 :(得分:-2)

使用jquery

尝试此操作
$("span").each(function(){
console.log($(this).attr('id'));
});

演示
   http://jsfiddle.net/p5k2a/1/