2010-02-17 70 views
0

我有我的网页上很多的DIV ID相同如何获得具有几乎相同ID属性的DIV的计数?

如:

<div id="myDiv1"> 
    ... 
</div> 
<div id="myDiv2"> 
    ... 
</div> 
<div id="myDiv3"> 
    ... 
</div> 

... 

<div id="myDiv20"> 
    ... 
</div> 

... 

正如你看到的,ID属性看起来几乎是相同的 - 唯一的diffrence是,有每个ID的数量。

如何获得该DIV的数量?我想我可以做这样的事情:

var myDivs= document.getElementById('myDiv'); 

但返回null

+0

你可以使用jQuery吗? – SLaks 2010-02-17 21:01:01

+0

更重要的是,您为什么需要这些信息?你会不依靠id属性获得相同的信息? – Romain 2010-02-17 21:02:10

回答

4

你可以使用这个jQuery像这样:

$('div[id^=myDiv]') 

如果你不能使用jQuery,你会需要调用getElementsByTagName并循环检查ID属性的值。

+0

您可能会考虑更新jQuery链接以指向选择器页面,因为这是与该问题最相关的页面。 (http://api.jquery.com/category/selectors/) – 2010-02-17 21:13:06

1

你可以使用jQuery

//this will give you all divs start with myDiv in the id 
var divs = $("div[id^='myDiv']"); 
+0

您不应该使用“@”符号。 – SLaks 2010-02-17 21:04:06

+0

是的,是的,快速打字问题:) – 2010-02-17 21:06:01

4
var divs = document.getElementsByTagName('div'); 
var counter = 0; 
for(var i in divs) { 
    if(divs[i].id.indexOf('myDiv') === 0) { 
     counter++; 
    } 
} 

或只是

document.querySelectorAll('[id^=myDiv]').length 
+0

它的工作原理,但如果添加另一个myDiv,'柜台'仍然是​​相同的值。代码似乎没有看到动态添加的myDiv – Tony 2010-02-17 21:20:08

+0

然后再次运行它。 – 2010-02-17 22:28:14

+0

将所有代码放入函数中,并在添加另一个div之前和之后运行该函数,它应该可以工作。 – chelmertz 2010-02-18 04:20:18

0

this site

function getElementsByRegExpId(p_regexp, p_element, p_tagName) { 
     p_element = p_element === undefined ? document : p_element; 
     p_tagName = p_tagName === undefined ? '*' : p_tagName; 
     var v_return = []; 
     var v_inc = 0; 
     for(var v_i = 0, v_il = p_element.getElementsByTagName(p_tagName).length; v_i < v_il; v_i++) { 
      if(p_element.getElementsByTagName(p_tagName).item(v_i).id && p_element.getElementsByTagName(p_tagName).item(v_i).id.match(p_regexp)) { 
       v_return[v_inc] = p_element.getElementsByTagName(p_tagName).item(v_i); 
       v_inc++; 
      } 
     } 
     return v_return; 
    } 

用法:

var v_array = getElementsByRegExpId(/^myDiv[0-9]{1,2}/); 
相关问题