Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在动态生成元素时避免ID冲突_Javascript_Jquery - Fatal编程技术网

Javascript 如何在动态生成元素时避免ID冲突

Javascript 如何在动态生成元素时避免ID冲突,javascript,jquery,Javascript,Jquery,假设我有这个模型代码: button.click(function(){generateForm();} function generateForm(){ div.append(<input type='text' id='x'>); } 按钮。单击(函数(){generateForm();} 函数generateForm(){ div.append(); } 我需要ID才能单独访问元素 强>在这样的场景中避免ID冲突的最好方法是什么?< /强>

假设我有这个模型代码:

    button.click(function(){generateForm();}

     function generateForm(){
     div.append(<input type='text' id='x'>);
  }
按钮。单击(函数(){generateForm();}
函数generateForm(){
div.append();
}
我需要ID才能单独访问元素


<>强>在这样的场景中避免ID冲突的最好方法是什么?< /强>

< p> >使用<代码>类< /代码>,但是如果您仍然愿意使用<代码> ID <代码>,您可以考虑使用这样的计数器:

   var idCounter = 1;
   function generateForm(){
     div.append("<input type='text' id='x-" + (idCounter++) + "'>");
  }
var idCounter=1;
函数generateForm(){
第4节附加(“”);
}

<>代码>更好的是使用<代码>类< /代码>,但是如果您仍然愿意使用<代码> ID <代码>,您可以考虑使用这样的计数器:

   var idCounter = 1;
   function generateForm(){
     div.append("<input type='text' id='x-" + (idCounter++) + "'>");
  }
var idCounter=1;
函数generateForm(){
第4节附加(“”);
}

如果您确实需要,可以使用当前时间戳作为id

这显然不会产生重复的ID,除非您每毫秒多次调用该函数,或者您的用户经常陷入TimeLoop中

函数generateForm(){
d=新日期();
div.append(');
}

编辑:请注意
唯一id-
前缀,因为id不应仅为数字。

如果您确实需要,可以使用当前时间戳作为id

这显然不会产生重复的ID,除非您每毫秒多次调用该函数,或者您的用户经常陷入TimeLoop中

函数generateForm(){
d=新日期();
div.append(');
}

编辑:请注意
唯一id-
前缀,因为id不应仅为数字。

如果不想跟踪外部计数器,请尝试:

  function makeAVeryRandomId () {
    var d = new Date(),
        a = ["0","1","2","3","4","5","6","7","8","9"],
        i = 10,
        m = '';

    while (i--) {
      m += a[Math.floor(Math.random() * a.length)];
    };

    return d.getTime() + m;
  };

请记住,
ID
s不应以数字开头,因此在随机数前面加上一个字母(或两个)。

如果不想跟踪外部计数器,请尝试:

  function makeAVeryRandomId () {
    var d = new Date(),
        a = ["0","1","2","3","4","5","6","7","8","9"],
        i = 10,
        m = '';

    while (i--) {
      m += a[Math.floor(Math.random() * a.length)];
    };

    return d.getTime() + m;
  };

请记住,
ID
s不应该以数字开头,所以在随机数前面加上一个字母(或两个字母).

这取决于您正在使用它做什么。在服务器端生成id可能最有意义。我将用有关该场景的更多信息更新问题。您可以在输入的id中添加一个随机数,这样就不会有冲突,或者在使用该id创建新输入之前检查给定的id是否已在使用中nds您正在使用它做什么。在服务器端生成id可能最有意义。我将使用有关该场景的更多信息更新问题。您可以向输入的id添加一个随机数,这样就不会有冲突,或者在使用该id创建新输入之前检查给定id是否已在使用感谢您的代表ly。你能详细说明在这种情况下使用类是如何工作的吗?你的问题仍然不清楚。你能告诉我你想对这些文本字段做什么吗?谢谢你的回答。你能详细说明在这种情况下使用类是如何工作的吗?你的问题仍然不清楚。你能告诉我你想做什么吗这些文本字段是什么?