2011-04-15 66 views
0

我有许多具有相同ID的跨度。如何将它们的值按照它们的出现顺序分配给不同的变量。如何将值分配给具有相同ID的不同跨度的变量

<span id="hello"> 18</span> 
<span id="hello"> 12</span> 
<span id="hello"> 21</span> 

欲VAR1 = 18 VAR2 = 12 VAR3 = 21

+4

ID必须是唯一的。改用类。重复的ID只意味着麻烦。而且,比起“动态变量”,创建一个数组数组会更好。 – 2011-04-15 09:58:46

+1

@Felix:仅当该属性是ID类型时才为true,如果没有看到DTD或Schema,我们无法正式知道该类型。它可能是,虽然看起来很像HTML ... – 2011-04-15 10:00:42

+0

@DonalFellows:对。 – 2011-04-15 10:04:41

回答

2

查看我对ID的评论。现在,假设你给元素类hello代替,这将在所有的浏览器:

var values = [], 
    spans = document.getElementsByTagName('span'); 

for(var i = 0, l = spans.length; i < l; i++) { 
    var span = spans[i]; 
    if(span.className === 'hello') { 
     values.push(span.innerHTML); 
    } 
} 

DEMO

如果你不能改变的HTML,在这种情况下,你可以比较的ID:

if(span.id === 'hello') 

这是好的,因为我们遍历所有跨度。但是像getElementById这样的方法将不起作用!

+0

谢谢你。我不能给他们上课,因为这个网页是由我正在使用的一个前体软件生成的。即时只是试图'黑客'在它。有没有另一种方法来定位span而不使用classname? – code511788465541441 2011-04-15 10:12:38

+0

@ user521180:那么在这种情况下,您实际上可以使用这些ID。查看我的更新。 – 2011-04-15 10:14:33

0

ID标签被认为是一个文档中是唯一的。如果您试图给它们相同的样式,那么您应该使用class属性而不是id属性。您可以使用jQuery class selector来获取具有给定类的所有元素(假设您更改为使用类而不是id)。

相关问题