2011-01-20 63 views
2

假设相同的id为具有以下许多因素:葛亭参考具有使用Javascript

<div> 
    <div id="element"></div> 
    <div id="element"></div> 
    <div id="element"></div> 
    <div id="element"></div> 
    <div id="element"></div> 
    <div id="element"></div> 
    <div id="element"></div> 
</div> 

确定。这个html片段被放置在代码中的某处... 我必须收集所有具有元素ID的标签。

我该如何在JavaScript中实现这一点?

的getElementById让我找回只有一个元素...

此外,我不能给你其他的假设......我的意思是我不能依靠类参数和名称参数(我的意思是,他们都是div的,所以...)。

谢谢

+0

仅供参考... id应该是唯一的 – BvdVen 2011-01-20 15:26:21

回答

2

你可以得到所有像这样

var alDivs = document.getElementById("element").parentNode.getElementsByTagName("div"); 
6

这是无效的具有相同ID不止一个元素 - 你应该重新考虑你的设计,让您可以指定唯一的ID给每个DIV。

如果您仍然想这样做(但请不要),您可将外层div一个ID,并得到所有孩子的名单DIV这样的:

var list = document.getElementById('outerDiv').getElementsByTagName('div'); 
1

如果你必须尝试像这样(与jQuery)$("div[id='element']"),但你真的应该尝试避免使用相同的id为页面上的多个元素。

一个简单的例子证实了这一点与jQuery 1.4.4兼容:jsFiddle,但再次,这不是一个好的设计。

2

注意的div:你也喜欢的名字=“元素”每个复选框给同名 那就试试这个javascript代码

var totalCheckBoxes=document.getElementsByName("element"); 
/*totalCheckBoxes is the array of all check boxes so implement further functionality upon 

它*/

http://rkj2me.blogspot.com/

0

看到它像你这样的MS可以得到相同的ID,例如所有元素:

<!-- the HTML: --> 

<div id="div_lala" style="background-color:#FFFFFF;"> 
some content 1111 
</div> 

<div id="div_lala" style="background-color:#FFFFFF;"> 
some content 2222 
</div> 

然后用JS的例子做一些对他们来说,就像起了变化的背景=)

function printElements() { 

    bgcolors=new Array("#0066FF","#FF9900") 

    elementCount = document.all("div_lala").length; //this will count all elements with the same name =) 
    alert('there are: '+ elementCount + 'elements =)') //just to know how many elements 

    for (i=0; i<elementCount; i++) { 

     document.all("div_lala",i).style.background = bgcolors[i]; //we change the color of each element according to the ones in the array 
    } 
} 

想法来源:http://www.webreference.com/js/tips/000921.html

希望帮助=)

1

如果你正面临着这样的事:

<div id="a"> 
    <div id="element">1</div>  
</div> 

<div id="b"> 
    <div id="element">2</div>  
</div> 

,并要在<div id="element">2</div>访问数据,然后通过jQuery的使用$("#b #element").html();

0

正如大家所说,具有相同ID的多个元素是一个糟糕的设计,应尽量避免这种情况。如果仍有需要,你必须真正从外星人入侵拯救地球,那么你可以利用querySelectorAll函数,返回相同属性值的所有数组中的元素如下:

<div id="element"></div> 
    <div id="element">A</div> 
    <div id="element">B</div> 
    <div id="element">C</div> 
    <div id="element">D</div> 
    <div id="element">E</div> 
    <div id="element">F</div> 
</div> 
<script type='text/javascript'> 
var result = document.querySelectorAll("#element"); 
/* 
result[0] points to <div id="element">A</div> 
result[1] points to <div id="element">B</div> 
result[2] points to <div id="element">C</div> 
result[3] points to <div id="element">D</div> 
result[4] points to <div id="element">E</div> 
result[5] points to <div id="element">F</div> 
*/ 
</script> 

现在,你可以唯一地访问数组索引,你可以唯一地访问具有相同id的元素(在这种情况下)!