我有一个带有动态Id的div元素。
<div id="parent">
<div id="elmn1"></div>
<div id="id-has-changed"></div>
<div id="elmn3"></div>
<div id="elmn4"></div>
<div id="id-has-changed-by-user-from-input-field"></div>
</div>所有的元素父元素(除了# id )都可以由用户从输入字段进行编辑,因此#parent的最后一个子元素可能具有由用户设置的新id。
我想检查id最后一部分中编号最高的元素(4),并想用下一个id附加一个新元素。
var nextId = "elmn" + (numberOfLastElement + 1);
var newElmn = document.createElement("div");
newElmn.id = nextId;
document.getElementById("parent").appendChild(newElmn);在这种特殊情况下,新元素将具有id="elmn5"。
我的问题是,如何获取numberOfLastElement
发布于 2014-10-03 22:41:48
更新:FINAL VERSION OF FIDDLE
var myEl = document.getElementById('parent').children;
var highest = null;
var idName= null;
if (myEl){
for (var ii=0;ii<myEl.length;ii++){
var temp = myEl[ii].getAttribute('id');
var intval = temp.match(/\d+/g)
if (intval !=null){
if(intval>highest){
highest = intval;
idName = temp;
}
}
}
}
console.log(idName);留下下面的内容作为历史信息。
这是一个working JSFiddle
var myEl = document.getElementById('parent').children;
var count = 0;
if (myEl) {
var match = 'elmn';
for (var ii = 0; ii < myEl.length; ii++) {
var temp = myEl[ii].getAttribute('id');
if (temp.indexOf(match) == 0) {
count++
}
}
}
alert('count is ' + count);发布于 2014-10-03 22:33:50
逻辑如下:
获取所有具有id="elmnx" where x=1,2等的元素。$("[id*='elmn']")
把最后一个拿过来。last()
获取其id。attr('id')
子字符串,以获取末尾的数字。substring(4)
将其设置为一个整数,这样您就可以添加+1。parseInt()
尝试:
var numberOfLastElement=parseInt($("[id*='elmn']").last().attr('id').substring(4));发布于 2014-10-03 23:02:38
假设所有适用的ID中都有elmn前缀,则如下所示:
function MaxElemNo() {
var prefix = "elmn";
var parent = document.getElementById("parent");
var elements = parent.querySelectorAll("[id^='"+ prefix + "']");
var lastElemNo = 0;
for (var i=0; i<elements.length; i++) {
var el = elements[i].id;
var num = + el.substring(prefix.length, el.length);
lastElemNo = Math.max(lastElemNo, num)
}
return lastElemNo;
}
console.log(MaxElemNo());https://stackoverflow.com/questions/26180810
复制相似问题