【发布时间】:2023-03-14 16:35:01
【问题描述】:
我正在设置一个功能,当在外部单击时会关闭下拉菜单。该函数按预期工作,但会引发错误。
考虑到该功能按预期工作,我不确定是什么导致了错误。
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)
【问题讨论】:
标签: javascript