简体   繁体   English

如何删除动态创建的字段

[英]How can I delete dynamically created fields

I have a function which creates up to three new dropdown fields upon clicking the add button (+).我有一个功能,可以在单击添加按钮 (+) 时创建最多三个新的下拉字段。

There is remove button (-) too.也有删除按钮 (-)。 It is supposed to delete the most recently created field.它应该删除最近创建的字段。

However, when I click on the remove button it does not remove the expected entry and I'm not sure why this is the case.但是,当我单击删除按钮时,它不会删除预期的条目,我不确定为什么会这样。

Finally, I want to be able to delete any new field that has been added by the add button.最后,我希望能够删除添加按钮添加的任何新字段。

 var clicks = 0 var update = 1 function add_item() { if (clicks < 2) { clicks += 1 update += 1 var x = document.createElement('div') var innerStuff = document.getElementById('hour_on_' + clicks).innerHTML var choiceLocation = document.getElementById("hour_on_" + clicks) x.innerHTML = innerStuff x.setAttribute("id", "hour_on_" + update) choiceLocation.appendChild(x) } function remove_item() { clicks -= 1 update -= 1 var elem = document.getElementById("hour_on_" + (update + 1)) elem.remove() } }
 <div> <label for="hour_on_1">Floor Warm From:</label> </div> <div id="hour_on_1"> <select class="hour_on" style="width:75px"> <option value="0"></option> <option value="1">1:00</option> <option value="1.25">1:15</option> <option value="1.5">1:30</option> <option value="1.75">1:45</option> <option value="2">2:00</option> <option value="2.25">2:15</option> <option value="2.5">2:30</option> <option value="2.75">2:45</option> <option value="3">3:00</option> </select> </div> <div> <button type="button" onclick="add_item()" style=clear:both>+</button> <button type="button" onclick="remove_item()" style=clear:both>-</button> </div>

Because you nested your remove_item() function inside your add_item() function.因为您将remove_item()函数嵌套在add_item()函数中。 You made it undefined outside of your add_item() function.您在add_item()函数之外未定义它。 I just pulled it out and made it its own function below.我只是把它拉出来,让它在下面成为自己的功能。

 var clicks = 0; var update = 1; function add_item() { if (clicks < 2) { clicks += 1 update += 1 var x = document.createElement('div') var innerStuff = document.getElementById('hour_on_' + clicks).innerHTML var choiceLocation = document.getElementById("hour_on_" + clicks) x.innerHTML = innerStuff x.setAttribute("id", "hour_on_" + update) choiceLocation.appendChild(x) } } // I only pulled the below function outside of the above one ;) function remove_item() { if (clicks > 0) { clicks -= 1 update -= 1 var elem = document.getElementById("hour_on_" + (update + 1)) elem.remove() } console.log('clicked') }
 <div> <label for="hour_on_1">Floor Warm From:</label> </div> <div id="hour_on_1"> <select class="hour_on" style="width:75px"> <option value="0"></option> <option value="1">1:00</option> <option value="1.25">1:15</option> <option value="1.5">1:30</option> <option value="1.75">1:45</option> <option value="2">2:00</option> <option value="2.25">2:15</option> <option value="2.5">2:30</option> <option value="2.75">2:45</option> <option value="3">3:00</option> </select> </div> <div> <button type="button" onclick="add_item()" style=clear:both>+</button> <button type="button" onclick="remove_item()" style=clear:both>-</button> </div>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM