当用户指定数量时动态克隆元素?-JavaScript+;HTML

当用户指定数量时动态克隆元素?-JavaScript+;HTML,javascript,jquery,html,css,Javascript,Jquery,Html,Css,用户是否可以在框中键入他们希望克隆并附加到页面上的元素数量 问题是,当用户当前指定要克隆的元素数量时,元素数量大于第二次单击时希望克隆的元素数量。另外,是否可以在HTML和CSS中隐藏要克隆的原始元素?请查看附件中的代码和 $(“#btn”)。单击(函数(){ var number=document.getElementById(“成员”).value; 变量e=$('.col'); 对于(i=0;i使用:first选择器仅克隆第一个 $('.col:first').hide(); $("#

用户是否可以在
框中键入他们希望克隆并附加到页面上的元素数量

问题是,当用户当前指定要克隆的元素数量时,元素数量大于第二次单击时希望克隆的元素数量。另外,是否可以在HTML和CSS中隐藏要克隆的原始元素?请查看附件中的代码和

$(“#btn”)。单击(函数(){
var number=document.getElementById(“成员”).value;
变量e=$('.col');

对于(i=0;i使用
:first
选择器仅克隆第一个

 $('.col:first').hide();
$("#btn").click(function() {
    var number = $("#member").val();
    var e = $('.col:first');
    $('.col').not('.col:first').remove();
    for (i=0;i<number;i++) {
      e.show().clone().insertAfter(e);
    }
    $('.col:first').hide();

});
$('.col:first').hide();
$(“#btn”)。单击(函数(){
变量编号=$(“#成员”).val();
变量e=$('.col:first');
$('.col')。不是('.col:first')。删除();

对于(i=0;i使用
:first
选择器仅克隆第一个

 $('.col:first').hide();
$("#btn").click(function() {
    var number = $("#member").val();
    var e = $('.col:first');
    $('.col').not('.col:first').remove();
    for (i=0;i<number;i++) {
      e.show().clone().insertAfter(e);
    }
    $('.col:first').hide();

});
$('.col:first').hide();
$(“#btn”)。单击(函数(){
变量编号=$(“#成员”).val();
变量e=$('.col:first');
$('.col')。不是('.col:first')。删除();

对于(i=0;i稍微调整HTML和Javascript

在下面添加了一段代码

HTML

Specify Amount of Member Cards Required:

<input placeholder="e.g. 2" type="text" id="member" name="member" value="">
<button id="btn">Go</button>

<div id="colTemplate" class="col">Member Card</div>
<div id="container"></div>
Javascript

$('#btn').click(() => {
  let number = document.getElementById('member').value,
      container = $('#container'),
      template = $('#colTemplate'),
      currentNumber = container.children().length;

  if (currentNumber < number) {
    // Add clones
    for (let i = 0; i < number - currentNumber; i++) {
      let clone = template.clone(true);
      clone.attr('id', null);   // Remove the id from the clone
      container.append(clone);
    }
  } else if (number < currentNumber) {
    // Remove extras
    let extras = $('#container .col');
    for (let i = currentNumber - 1; i > number - 1; i--) {
      extras.eq(i).remove();
    }
  }
});
$('#btn')。单击(()=>{
让number=document.getElementById('member')。值,
容器=$(“#容器”),
模板=$(“#colTemplate”),
currentNumber=container.children().length;
如果(当前编号<编号){
//添加克隆
for(设i=0;inumber-1;i--){
附加等式(i).移除();
}
}
});

对HTML和Javascript稍作调整

在下面添加了一段代码

HTML

Specify Amount of Member Cards Required:

<input placeholder="e.g. 2" type="text" id="member" name="member" value="">
<button id="btn">Go</button>

<div id="colTemplate" class="col">Member Card</div>
<div id="container"></div>
Javascript

$('#btn').click(() => {
  let number = document.getElementById('member').value,
      container = $('#container'),
      template = $('#colTemplate'),
      currentNumber = container.children().length;

  if (currentNumber < number) {
    // Add clones
    for (let i = 0; i < number - currentNumber; i++) {
      let clone = template.clone(true);
      clone.attr('id', null);   // Remove the id from the clone
      container.append(clone);
    }
  } else if (number < currentNumber) {
    // Remove extras
    let extras = $('#container .col');
    for (let i = currentNumber - 1; i > number - 1; i--) {
      extras.eq(i).remove();
    }
  }
});
$('#btn')。单击(()=>{
让number=document.getElementById('member')。值,
容器=$(“#容器”),
模板=$(“#colTemplate”),
currentNumber=container.children().length;
如果(当前编号<编号){
//添加克隆
for(设i=0;inumber-1;i--){
附加等式(i).移除();
}
}
});

那么您想隐藏以前克隆的元素?您好,使用Javascript代码,它当前通过标识类和克隆来克隆现有元素。因此,我只想隐藏Javascript从中复制的原始元素。那么您想隐藏以前克隆的元素吗?您好,使用Javascript代码,它当前克隆了一个e通过识别类和克隆来存在元素。因此,我只想隐藏Javascript从中复制的原始元素。您好,感谢您提出这个问题。但是,以下代码的问题是,当用户第二次尝试动态添加更多元素时,动态元素多于最初指定。有可能解决这些问题吗?谢谢!@Dave,我更新了上面的答案。它有一些小的逻辑问题。它们现在已经修复。我还添加了一个指向JSFIDLE的链接,以便您可以看到代码在那里工作。您好,感谢您对这个问题做出贡献。但是,以下代码的问题是当用户尝试第二次动态添加更多元素,动态元素比最初指定的多。是否有可能解决这些问题?谢谢!@Dave,我更新了上面的答案。它有一些小的逻辑问题。它们现在已修复。我还添加了一个指向JSFIDLE的链接,以便您可以看到代码在那里工作。