2 回答

TA貢獻(xiàn)1877條經(jīng)驗(yàn) 獲得超6個(gè)贊
單擊后調(diào)用時(shí)app()
,您可以向所有現(xiàn)有元素添加一個(gè)新的事件偵聽(tīng)器,這是對(duì)它們已附加的處理程序的補(bǔ)充。
無(wú)需app
在那里調(diào)用,只需將偵聽(tīng)器添加到新創(chuàng)建的克隆即可。
其次,函數(shù)和變量使用相同的名稱。這很令人困惑。
因此以不同的方式命名該變量:
const clonedDiv = div.cloneNode(true); document.body.appendChild(clonedDiv); clonedDiv.addEventListener('click', clone);
如您所見(jiàn),您也不需要該箭頭函數(shù)。clone
只需作為函數(shù)參數(shù)傳遞即可。

TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超7個(gè)贊
在克隆函數(shù)中,您再次調(diào)用 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
}
這會(huì)以遞歸結(jié)束,因?yàn)槊看螁螕羲紩?huì)添加一個(gè)新的偵聽(tīng)器。
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 關(guān)注
- 200 瀏覽
添加回答
舉報(bào)