【发布时间】:2023-03-24 18:24:01
【问题描述】:
我有一个元素数组,我将它们显示为一个按钮,并且这些元素有一个关闭按钮。所以我使用 for each 来分配他们并给他们点击事件。所以这两个功能都有效。但是当我关闭一个元素时,会自动调用下一个元素。
function printAll() {
data.innerHTML = '';
allFile.forEach((a, i) => {
data.innerHTML = ` ${data.innerHTML} <div id="${allFile[i].id}" class = "btn" >${allFile[i].path} <span class="close">× </span> </div>`;
});
allFile.forEach((a, i) => {
let temp = document.getElementById(allFile[i].id);
temp.addEventListener('click', () => {
open(allFile[i].path, allFile[i].type)
});
});
allFile.forEach((a, i) => {
let temp2 = document.getElementById(allFile[i].id).querySelector(".close");
temp2.addEventListener('click', () => {
close(i);
});
});
}
function close(is) {
let aas = allFile.splice(is, 1);
for (let i = 0; i < allFile.length; i++) {
if (i > is - 1) {
allFile[i].id--;
}
}
allFile.forEach(a => console.log(a.id))
allFile.forEach(a => console.log(a.path))
window.setTimeout(() => {
printAll();
}, 600);
}
所以预期的输出是,当我关闭一个框/按钮时,它会移除,而其他元素只会出现而不调用下一个元素的点击事件。
但发生的情况是,当我关闭它时,它只是调用下一个元素的点击事件。
【问题讨论】:
标签: javascript