【发布时间】:2020-03-27 20:30:50
【问题描述】:
我会进入正题
我在尝试什么?: 我尝试克隆项目,以便每个项目在单击时都克隆自身。甚至那些被克隆的。
问题: 问题是,当我克隆了例如 10 个项目时,在单击第一个(原始)项目后,它会克隆接下来的 10 个项目。只有最后一个(最新的)克隆,克隆一个元素,不管我已经有多少元素。
信息: 在“克隆”函数末尾没有 app() 时,只有原始元素会添加更多克隆。
这是 clondeNode() 的问题,或者可能是错误未对齐的 addEventListener?
提前感谢您的帮助,马特
JS:
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()
}
app()
HTML:
<body>
<div class='div'>DIV FOR CLONING</div>
<script src="main.js"></script>
</body>
【问题讨论】:
-
每次调用 app() 时都会添加更多的监听器!!
addEventListener不会取代现有的。 -
你在哪里声明
() => clone(event)中使用的event变量? -
应该是
(event) => clone(event)
标签: javascript html addeventlistener appendchild clonenode