增量编号问题在克隆元素中创建唯一名称

时间:2014-03-05 02:01:23

标签: javascript auto-increment increment cloning

Onclick我正在克隆复选框,以便客户可以根据需要订购原始商品。我现在有两个问题:

1)在原始名称中添加唯一编号。它现在的工作方式:

我得到这个a_1,a_12,a_123等

而不是a_1,a_2,a_3等

2)另一个问题是文本框“b”的增量不是从1开始,而是前一个(a)的结束。我希望它从一开始。

感谢您的帮助,这是我的代码:

c = 0;
$('input[type="checkbox"]').change(function(){
var currentNameAttr = $(this).attr('name'); 
var newNameAttr = (currentNameAttr+(++c))
var cloned;
if($(this).is(':checked')) {
$(this).parent().parent().parent().clone(true).insertAfter(this)
$(this).prop('checked', false)
$(this).attr('name', newNameAttr)
}
}) 

1 个答案:

答案 0 :(得分:0)

这是因为这一行:var newNameAttr = (currentNameAttr+(++c))。会发生什么情况,它会检查currentNameAttr$(this).attr('name')的内容并将c添加到其中。但是,你没有删除最后一个c,所以你需要做的是:

 c = 0;
 $('input[type="checkbox"]').change(function(){
      var baseName = "a_"; 
      var newNameAttr = baseName + c;
           c++;
      var cloned;

      if($(this).is(':checked')) {
           $(this).parent().parent().parent().clone(true).insertAfter(this)
           $(this).prop('checked', false)
           $(this).attr('name', newNameAttr)
      }
 }) 

这样它总是会将c(大于0的整数)添加到baseName,这将是“a_”或您设置的任何内容。每次执行此功能时,它都会递增c,以便下次不会分配相同的ID。