首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从动态元素获取动态Id

从动态元素获取动态Id
EN

Stack Overflow用户
提问于 2014-10-03 22:24:42
回答 3查看 17.6K关注 0票数 2

我有一个带有动态Id的div元素。

代码语言:javascript
复制
<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附加一个新元素。

代码语言:javascript
复制
var nextId = "elmn" + (numberOfLastElement + 1);
var newElmn = document.createElement("div");

newElmn.id = nextId;
document.getElementById("parent").appendChild(newElmn);

在这种特殊情况下,新元素将具有id="elmn5"

我的问题是,如何获取numberOfLastElement

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-10-03 22:41:48

更新:FINAL VERSION OF FIDDLE

代码语言:javascript
复制
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

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2014-10-03 22:33:50

逻辑如下:

获取所有具有id="elmnx" where x=1,2等的元素。$("[id*='elmn']")

把最后一个拿过来。last()

获取其id。attr('id')

子字符串,以获取末尾的数字。substring(4)

将其设置为一个整数,这样您就可以添加+1。parseInt()

尝试:

代码语言:javascript
复制
var numberOfLastElement=parseInt($("[id*='elmn']").last().attr('id').substring(4));
票数 2
EN

Stack Overflow用户

发布于 2014-10-03 23:02:38

假设所有适用的ID中都有elmn前缀,则如下所示:

代码语言:javascript
复制
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());
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26180810

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档