2 回答
TA贡献1868条经验 获得超4个赞
要删除侦听器,事件名称需要相同。你有 keyup 和 keypress。
处理函数引用也需要相同。为此,您需要一个命名函数,我从您的 addEventlistener 中使用的匿名函数创建并调用它handleKeypress
现在用于添加/删除的参数与需要的相同
function closeImgModal() {
imgModal.style.display = "none";
document.body.style.overflowY = "auto";
document.body.removeEventListener('keypress', handleKeypress)
}
function handleKeypress(e) {
console.log(e);
if (e.key === "Escape") {
closeImgModal();
}
}
function openBig(el) {
document.body.style.overflowY = "hidden";
imgModal.style.display = "block";
randomImg.src = el.src;
document.body.addEventListener('keypress', handleKeypress);
}
TA贡献1856条经验 获得超17个赞
尝试这个
function closeImgModal() {
imgModal.style.display = "none";
document.body.style.overflowY = "auto";
document.body.removeEventListener('keypress', closeImgModal)
}
function openBig(el) {
document.body.style.overflowY = "hidden";
imgModal.style.display = "block";
randomImg.src = el.src;
document.body.addEventListener('keypress', function (e) {
console.log(e);
if (e.key === "Escape") {
closeImgModal();
}
});
}
添加回答
举报