我有一些输入如下:
<input type="hidden" id="selected_id-1" name="id[]" />
<input type="hidden" id="selected_id-2" name="id[]" />
<input type="hidden" id="selected_id-3" name="id[]" />
<input type="hidden" id="selected_id-5" name="id[]" />
该列表不仅包含4个元素。
所以,我想从名为“id”的元素的id中提取最高数字(在我们的例子中= 5)。
需要纯JavaScript。
编辑:感谢所有回答我问题的人。
答案 0 :(得分:4)
var number = element.id.replace(/^[^\d]+/, "");
或
var number = element.id.match(/\d+/)[0];
编辑:刚看到你想要获得最后一个元素:
var elements = document.getElementsByName("id[]");
var element = elements[elements.length - 1];
现在您可以使用我在编辑上方显示的任何一种方法。
答案 1 :(得分:3)
假设您的元素可能没有按ID排序,您必须全部检查才能找到最高的元素。
var inputs = document.getElementsByTagName('input');
var highest = 0;
for(var i=0; i<inputs.length; i++) {
if(inputs[i].name == 'id[]') {
var current = inputs[i].id.split('-')[1];
highest = (current > highest) ? current : highest;
}
}
// Now highest contains the highest numeric id
console.log(highest);
答案 2 :(得分:2)
您可以使用正则表达式或slice()
:
var num = this.id.match(/(\d+)/)[0];
或者,使用切片:
var num = this.id.slice(-1);
slice()
的选项仅适用于一位数字。
答案 3 :(得分:2)
这假设元素是按数字顺序排列的。
var elems = document.getElementsByName("id[]");
//or var elems = document.getElementById("formId").elements["id[]"];
//or var elems = document.formName.elements["id[]"];
//or var elems = document.forms[0].elements["id[]"];//0 is the index of the form on the page
var lastElem = elems[elems.length-1];
var lastId = lastElem.id;
var parts = lastId.split("-");
var num = parts[1];
alert(num);
如果它们不是按数字顺序排列,则需要循环并跟踪。
function getNumber(elem){
return parseInt(elem.id.split("-")[1],10);
}
var elems = document.getElementsByName("id[]");
var max = getNumber(elems[0]);
for (var i=1;i<elems.length;i++) {
var num = getNumber(elems[i]);
if (num>max) {
max = num;
}
}
alert(max);
答案 4 :(得分:1)
使用像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&gt; = 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解决方案应该适合您的需求。
答案 5 :(得分:1)
假设您的表单是页面上的第一个表单,您可以执行以下操作:
var c = document.forms[0].children;
for( var i=0; i<c.length; i++ ) {
var prefix = "selected_id-";
if( c[i].id.search( prefix )===0 )
console.log( c[i].id.substring( prefix.length ) );
}
答案 6 :(得分:1)
function check(){
var form = document.forms[0];
var txtS = form["id[]"];
var len = txtS.length;
var numb =txts[len-1].split('-')[1]
}
或者您可以使用
var elementgroup = document.getElementsByName("id[]");
var nub= elementgroup[elementgroup .length - 1].split('-')[1];