我有带动态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除外),因此#parent的最后一个子节点可能具有用户设置的新ID。
我想在4
的最后一部分检查具有最高编号(id
)的元素,并且我想在下一个id
附加一个新元素。
var nextId = "elmn" + (numberOfLastElement + 1);
var newElmn = document.createElement("div");
newElmn.id = nextId;
document.getElementById("parent").appendChild(newElmn);
在这个特殊情况下,新元素将具有id="elmn5"
。
我的问题是,如何获得numberOfLastElement
?
答案 0 :(得分:2)
这是逻辑:
获取包含id="elmnx"
的所有元素,其中x = 1,2,等等$("[id*='elmn']")
获取最后一个。 last()
获取其ID。attr('id')
子串以获得最后的数字。 substring(4)
将其设为int,以便添加+1。 parseInt()
尝试:
var numberOfLastElement=parseInt($("[id*='elmn']").last().attr('id').substring(4));
答案 1 :(得分:2)
更新更新: 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);
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);
答案 2 :(得分:1)
这样的事情,假设所有适用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());