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 關注
- 187 瀏覽
添加回答
舉報