gpt4 book ai didi

javascript - .addEventListener 抛出 TypeError

转载 作者:行者123 更新时间:2023-12-02 22:45:54 24 4
gpt4 key购买 nike

我正在设置一个函数,当在外部单击时将关闭下拉菜单。该函数按预期工作,但抛出错误。

考虑到该函数按预期工作,我不确定导致错误的原因。

const userBtn = document.querySelector(".header-userbtn");
const userMenu = document.querySelector(".header-usermenu");

function hideOnClickOutside(element, button) {
if (!element.classList.contains("active")) {
return false;
}
const outsideClickListener = event => {
if (!element.contains(event.target)) {
button.click();
removeClickListener();
}
};

const removeClickListener = () => {
document.removeEventListener("click", outsideClickListener);
};

document.addEventListener("click", outsideClickListener);
}

userBtn.addEventListener("click", function(e) {
const chevron = this.querySelector(".chevron-wht");

this.classList.toggle("active");
chevron.classList.toggle("active");
userMenu.classList.toggle("active");

e.stopPropagation();
document.addEventListener( /*main.js:31 */
"click",
hideOnClickOutside(userMenu, userBtn));
});

这是错误消息。每次菜单关闭时都会触发,并且从单击事件中调用该函数。

main.js:31 Uncaught TypeError: Failed to execute 'addEventListener' on 'EventTarget': The callback provided as parameter 2 is not an object.
at HTMLButtonElement.<anonymous> (main.js:31)

最佳答案

您当前没有向指定的事件监听器提供回调函数...

document.addEventListener(
"click",
function() { hideOnClickOutside(userMenu, userBtn); }
);

关于javascript - .addEventListener 抛出 TypeError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58403610/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com