如何停止无限克隆 JavaScript 内的表单域?

How can I stop infinite cloning of a form field within JavaScript?

我更像是一个 HTML/CSS 人,所以 JavaScript 对我来说还是很陌生。如果能提供任何帮助,我将不胜感激!

我在 JSfiddle 上找到了一个 JavaScript 片段,它几乎完全满足我的需要。我一直在寻找一种在单击按钮时克隆表单字段的方法。这就是问题所在。每次单击按钮时,这段代码都会无限添加一个新字段。我真的需要限制为 2 个新字段(因此总共有 3 个字段)。然后我希望按钮在最后一个字段被克隆后消失,这样用户就不会尝试重复点击它。我一整天都在尝试调整它,但没有运气。这是 link:JS Fiddle link

这是 JavaScript: document.getElementById('button').onclick = 重复;

var i = 0;
var original = document.getElementById('duplicater');

function duplicate() {
    var clone = original.cloneNode(true); 
    clone.id = "duplicetor" + ++i; 
    original.parentNode.appendChild(clone);
}

谢谢!

添加一个计数器。它将检查已创建的字段数是否为 <2,如果为 > 或 =

,则不再 运行
var i = 0;
var original = document.getElementById('duplicater');

var count = 0;

function duplicate() {
    if(count<2) {
        var clone = original.cloneNode(true); 
        clone.id = "duplicetor" + ++i; 
        original.parentNode.appendChild(clone);
    }

    count++;
}

您已经在跟踪重复的数量,因此添加

if (i === 2) {
    document.getElementById('button').disabled = true;
}

到您的 duplicate() 函数以在点击 2 次后禁用按钮

JSfiddle

还要注意拼写!除了 duplicator

的各种拼写错误之外,你还有 onlick="duplicate()" 而不是 onclick=duplicate()

只需用这个 if (i >= 2) { 替换您的 if 条件,这里我们正在检查 i 是否大于或等于 2,因此隐藏了按钮。