问题描述
|
我的HTML中每个小数ID的跨度都不同:
<span id=\"1\">Lorem Ipsum</span>
<span id=\"23\">Lorem Ipsum</span>
<span id=\"6\">Lorem Ipsum</span>
我想使用javascript获取最高的ID。在这种情况下,它应该返回23。
我怎样才能做到这一点?
谢谢。解决方法
请注意这些用于HTML 4的DOM ID的规则(HTML 5具有不同的规则)。如果更改为以字母开头,则可以在解析之前使用子字符串或正则表达式删除数字部分。以下代码在数字部分之前假定字母的前缀(例如\'\'),并且是普通JS,不需要jQuery。
// get all spans
var spans = document.getElementsByTagName(\"span\");
var length = spans.length;
// variable for the highest one
var highest = 0;
// loop over to find the highest ID by looking at the property parsed as an int
for(var i = 0; i < length; i++) {
var id= parseInt(spans[i].id.substring(1,spans[i].id.length),10);
if(id > highest) {
highest = id;
}
}
alert(highest);
看到它在行动
您也可以在jQuery中执行此操作:
var highest = 0;
$(\"span\").each(function() {
var id = parseInt(this.id.substring(1,this.id.length),10);
if(id > highest) {
highest = id;
}
});
alert(highest);
实际观看,ID必须以字母开头。它们不能仅是数字。,var els = document.getElementsByTagName(\'span\'),highest = 0,i,cur;
for (i = 0; i < els.length; i++) {
cur = parseInt(els[i].id,10);
if (els[i].id > highest) {
highest = cur;
}
}
highest
将包含最大值。
但是请注意,在HTML4中,元素ID以非字母字符开头是非法的:
ID和NAME令牌必须以字母([A-Za-z])开头,后跟任意数量的字母,数字([0-9]),连字符(\“-\”),下划线(\“ _ \“),冒号(\”:\“)和句点(\”。\“)。 (资源)
如果您使用的是HTML5,这不是问题。而且,它仍然可能会正常工作。,ID和NAME令牌必须以字母([A-Za-z])开头,后跟任意数量的字母,数字([0-9]),连字符(\“-\”),下划线(\“ _ \“),冒号(\”:\“)和句点(\”。\“)。
资源
我的解决方案是:
var item = $(\'span\').get(0);
var max_id = parseInt($(item).attr(\'id\'));
$(\'span\').each(function(){
var curr_id = parseInt($(this).attr(\'id\'));
if (curr_id > max_id){
max_id = curr_id;
item = $(this);
}
});