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();
}
});
}
添加回答
舉報