【发布时间】:2020-09-14 14:23:10
【问题描述】:
这是我的问题:
document.addEventListener("DOMContentLoaded",function() {
const adduser = document.querySelector("#add-user");
const original = document.querySelectorAll('#input');
let i = 0;
function duplicate() {
let clone = original[0].cloneNode(true);
clone.id = "input" + ++i;
clone.name = "input" + ++i;
original[0].after(clone);
}
adduser.onclick = function() {
duplicate();
};
});
<form action="second.php" method="post">
<div class="form-group">
<label for="username">Name of the user:</label>
<input type="text" class="form-control multinput" class="username" id="input" placeholder="Enter the user's name" name="fullName">
<button type="button" class="btn btn-default" id="add-user">+ Add a user</button>
</div>
<div class="buttons">
<input type="submit" name="submit" id="submit" class="button" value="Submit"/>
</div>
</form>
正如您已经猜到的那样,我正在尝试克隆一个字段,但我想增加这个字段的两个属性(在本例中,这是一个输入字段)。
现在我的问题是,一旦我按下按钮克隆 INPUT,在这种情况下,我将同时增加 id 和 name,但不幸的是,它们不会保持相同的数字,实际上标记将变为:
<form action="second.php" method="post">
<div class="form-group">
<label for="username">Name of the user:</label>
<input type="text" class="form-control multinput" id="input" placeholder="Enter the user's name" name="fullName">
<input type="text" class="form-control multinput" id="input" placeholder="Enter the user's name" name="input3">
<input type="text" class="form-control multinput" id="input" placeholder="Enter the user's name" name="input1">
<button type="button" class="btn btn-default" id="add-user">+ Add a user</button>
</div>
<div class="buttons">
<input type="submit" name="submit" id="submit" class="button" value="Submit">
</div>
</form>
这个。如您所见,在我的选择中,我们有两个错误的操作,它们是:
-
克隆的输入然后附加到原始输入的顺序错误,因为它被添加到第一个元素 (0),所以最后一个附加的元素不会是上升的,但在这种情况下,它将具有更高的数字.
-
id 和 name 都会递增,所以我会有相同的输入,id=1 和 name=2,这并不理想。
关于如何解决问题的任何提示?
【问题讨论】:
-
++i递增i。如果您只想要i的值而不再次增加它,您会改为写...? -
i.. 但我需要在两者上增加 I 的值!
-
每次调用
duplicate函数时,您都将i递增两次。 -
@MarcoMaffei - 但是一旦你完成了
++i,i就有了 updated 值。所以clone.id = "input" + ++i;更新它并将"input1"分配给id。然后clone.name = "update" + i;(无增量)也将"input1"分配给name。或者在一个声明中做到这一点:clone.id = clone.name = "input" + ++i;或者为了最清楚:++i; clone.id = clone.name = "input" + i; -
您可以为这两个属性分配一个增量:
clone.id = clone.name = "input" + i;。
标签: javascript html clone increment