使用 jQuery 之类的东西更容易做到这一点,因为它会为您处理所有困难的部分。但是,如果您使用的是现代浏览器,则可以这样做:
var highestNum = (function() {
var highest = 0, r = /\-(\d+)$/, i, elems = document.getElementsByName("id[]");
for(i=0; i<elems.length; i++) {
highest = Math.max(highest, +elems[i].id.match(r)[1]);
}
return highest;
});
这也说明了元素可能出现故障。尽管它依赖于一个相当新的浏览器来工作(IE>=8 或任何不是 IE 的东西)。如果您想要对 IE6 之类的东西提供后备支持,最好的选择是使用 jQuery 或其他此类库。使用 jQuery,解决方案将是这样的:
var highestNum = (function() {
var highest = 0, r = /\-(\d+)$/;
$("input[name='id[]']").each(function() {
highest = Math.max(highest, +this.id.match(r)[1]);
});
return highest;
});
更新:我欺骗了别人的解决方案,使它对 IE6 更友好。jQuery 解决方案仍然稍微简单一些,但 vanilla 解决方案应该适合您的需求。