[英]JavaScript button click should append a input field to it's own div
如果我使用innerHTML+=
附加一个新的输入字段,我会遇到EventListeners
麻烦,因为我猜有一个缓存问题。
<div id="frame">
<input type="button" id="btn"/>
</div>
JS
document.getElementById("btn").addEventListener("click",function(){
divframe.innerHTML+=" <input ... />..."
});
我只是想如果用户一遍又一遍地按下按钮,就会有一个新的输入和按钮。(带有自己的EventListeners-现在没有必要了。)
不用使用innerHTML而是使用appendChild,因此第一个和以下按钮不会丢失其事件,对于新元素,您可以添加onclick事件:
<div id="frame">
<input type="button" value="Add" class="addBtn">
</div>
<script>function appendBtn(){
var newBtn = document.createElement("input");
newBtn.onclick = appendBtn;
newBtn.value = "Add";
newBtn.classname = "addBtn";
newBtn.type = "button"
document.getElementById("frame").appendChild(newBtn);
}
document.getElementsByClassName("addBtn")[0].addEventListener("click",function(){
appendBtn()
})</script>
您必须创建元素,然后将元素追加到div中。 您可以尝试以下方法:
document.getElementById("btn").addEventListener("click", function() {
var div = document.getElementById("frame");
var input = document.createElement("INPUT");
div.appendChild(input);
});
希望这会有所帮助!
divframe.innerHTML+=...
重写内部HTML并从子元素中删除事件侦听器(如果有)。 您需要再次添加addEventListener
。 下面是(无用但有效的)代码。 请注意,只有第一个按钮保持可单击状态,因为getElementById
仅返回具有相同ID的一个(第一个)元素。 正如在其他答案中所说的那样,最好使用appendChild
。
var divFrame=document.getElementById('frame'); function setListener(){ document.getElementById('btn').addEventListener('click', function(){ divFrame.innerHTML+=divFrame.innerHTML; setListener(); }); } setListener();
<div id="frame"> <input type="button" id="btn" value="click" /> </div>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.