我想问一下如何对我用createElement()创建的元素执行addEventListner()。
我在我的项目中有一个添加按钮,当我点击它时,它会创建另一个添加按钮,并继续使用该按钮创建添加按钮。
但是我的第一个按钮可以工作,并且不断地创建新的按钮,但是其他的按钮什么也不做。
这是我的代码。
const addBtn = document.querySelector('.button');
const total = document.getElementById('amount-total');
addBtn.addEventListener('click', addButton);
let counter = 0;
function addButton(){
counter++;
let newDiv = document.createElement('div');
newDiv.id = 'new-container' + counter;
total.parentNode.insertBefore(newDiv, total)
let createBtn = document.createElement('button');
createBtn.innerHTML = '+';
createBtn.className = 'button';
newDiv.appendChild(createBtn);
}但它不起作用,所以我尝试了querySelectorAll。
const addBtns = document.querySelectorAll('.button');
addBtns.forEach(btn => btn.addEventListener('click', addButton))我刚接触javascript,非常感谢你能帮我解决这个问题。
谢谢。
发布于 2020-03-06 19:33:24
如果我理解正确的话,您应该在函数addbutton()中添加addEventListener('click', addButton)。通过这种方式,您还可以在每次单击添加的按钮时创建一个新按钮。你的代码:
const addBtn = document.querySelector('.button');
const total = document.getElementById('amount-total');
addBtn.addEventListener('click', addButton);
let counter = 0;
function addButton() {
counter++;
let newDiv = document.createElement('div');
newDiv.id = 'new-container' + counter;
total.parentNode.insertBefore(newDiv, total)
let createBtn = document.createElement('button');
createBtn.innerHTML = '+';
createBtn.addEventListener('click', addButton); //added this line here!
createBtn.className = 'button';
newDiv.appendChild(createBtn);
}希望这能帮助你理解。
https://stackoverflow.com/questions/60562776
复制相似问题