.addEventListener 抛出 TypeError [重复]
Posted
技术标签:
【中文标题】.addEventListener 抛出 TypeError [重复]【英文标题】:.addEventListener throwing TypeError [duplicate] 【发布时间】:2020-02-12 15:53:39 【问题描述】:我正在设置一个功能,当在外部单击时会关闭下拉菜单。该函数按预期工作,但会引发错误。
考虑到该功能按预期工作,我不确定是什么导致了错误。
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)
【问题讨论】:
【参考方案1】:您当前没有为您指定的事件侦听器提供回调函数...
document.addEventListener(
"click",
function() hideOnClickOutside(userMenu, userBtn);
);
【讨论】:
以上是关于.addEventListener 抛出 TypeError [重复]的主要内容,如果未能解决你的问题,请参考以下文章
attachEvent和addEventListener区别