我的HTML中有不同的跨度,每个小数ID都是:
<span id="1">Lorem Ipsum</span>
<span id="23">Lorem Ipsum</span>
<span id="6">Lorem Ipsum</span>
我希望使用javascript获取最高ID。在这种情况下,它应该返回23。
我该怎么做?
感谢。
答案 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);
您也可以在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);
答案 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]),连字符(“ - ”),下划线(“ _“),冒号(”:“)和句号(”。“)。
我的解决方案是:
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);
}
});