从动态元素中获取动态ID

时间:2014-10-03 14:24:42

标签: javascript jquery

我有带动态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

3 个答案:

答案 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);

留下以下内容以获取历史信息。

这是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);

答案 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());

JS Fiddle