2 回答
TA贡献1877条经验 获得超6个赞
单击后调用时app()
,您可以向所有现有元素添加一个新的事件侦听器,这是对它们已附加的处理程序的补充。
无需app
在那里调用,只需将侦听器添加到新创建的克隆即可。
其次,函数和变量使用相同的名称。这很令人困惑。
因此以不同的方式命名该变量:
const clonedDiv = div.cloneNode(true); document.body.appendChild(clonedDiv); clonedDiv.addEventListener('click', clone);
如您所见,您也不需要该箭头函数。clone
只需作为函数参数传递即可。
TA贡献1876条经验 获得超7个赞
在克隆函数中,您再次调用 app()
app = () => {
const divs = document.querySelectorAll('.div');
divs.forEach((div) => {
div.addEventListener('click', () => clone(event))
})
}
clone = (event) => {
const div = event.target;
const clone = div.cloneNode(true);
document.body.appendChild(clone)
app() // <<<<<<-------HERE
}
这会以递归结束,因为每次单击它都会添加一个新的侦听器。
https://codesandbox.io/s/agitated-cohen-0j6dm
const clone = event => {
const div = event.target;
const cloned = div.cloneNode(true);
document.body.appendChild(cloned);
cloned.addEventListener("click", clone);
};
- 2 回答
- 0 关注
- 125 浏览
添加回答
举报