在Javascript中获得最高ID

时间:2011-04-19 13:21:28

标签: javascript

我的HTML中有不同的跨度,每个小数ID都是:

<span id="1">Lorem Ipsum</span>
<span id="23">Lorem Ipsum</span>
<span id="6">Lorem Ipsum</span>

我希望使用javascript获取最高ID。在这种情况下,它应该返回23。

我该怎么做?

感谢。

4 个答案:

答案 0 :(得分:6)

注意{4}用于HTML 4的DOM ID(HTML 5有these rules)。如果更改为以字母开头,则可以在解析之前使用子字符串或正则表达式删除数字部分。下面的代码假定在数字部分之前的字母前缀(例如's'),并且是vanilla 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);

different rules

您也可以在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);

see it in action

答案 1 :(得分:2)

ID必须以字母开头。他们不能单独成为数字。

答案 2 :(得分:2)

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]),连字符(“ - ”),下划线(“ _“),冒号(”:“)和句号(”。“)。 (source)

如果您使用HTML5,这不是问题。而且,无论如何,它可能会起作用。

答案 3 :(得分:0)

  

ID和NAME令牌必须以字母([A-Za-z])开头,后面可以跟任意数量的字母,数字([0-9]),连字符(“ - ”),下划线(“ _“),冒号(”:“)和句号(”。“)。

source

我的解决方案是:

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);
   }
});