Javascript JS函数始终在我的html开始时执行代码

Javascript JS函数始终在我的html开始时执行代码,javascript,Javascript,我是JS新手,我在YouTube上看了一些速成课程,并试图在同一时间完成。我正在使用Visual Studio代码和扩展名live server,以便快速查看更改 在我的JS代码中: //SUBSCRIBE var subscribeEmail = document.getElementById('subscribe-email'); var subscribeSubmit = document.getElementById('subsribe-link-btn');

我是JS新手,我在YouTube上看了一些速成课程,并试图在同一时间完成。我正在使用Visual Studio代码和扩展名live server,以便快速查看更改

在我的JS代码中:

    //SUBSCRIBE
    var subscribeEmail = document.getElementById('subscribe-email');
    var subscribeSubmit = document.getElementById('subsribe-link-btn');

//HEADER
    var headerRootWrapper = document.getElementById("navbar-wrapper");
    console.log(headerRootWrapper);
    var show = document.getElementById('sidebar-wrapper');

//LOGO
    var webLogo = document.getElementById('logo');
    console.log(webLogo);

//MENU BAR
    var menuBar = document.getElementById('menu-bar').addEventListener('click', menuSlideLeft());
    console.log(menuBar);
    var sideMenuId = document.getElementById('sidebar-wrapper');

//SEARCH BAR
    var searchBar = document.getElementById('searchBarShow').addEventListener('click',searchStart());

// METHOD 
    function menuSlideLeft() {
        alert("Fire");

}
从我的Html文件中,我在底部添加了js脚本(不在body标记中)。它总是在开始时执行方法
menuSlideLeft()
,而不让我单击菜单栏

<script src="js/jscript.js"></script>


您正在此行中调用函数

var menuBar = document.getElementById('menu-bar').addEventListener('click', menuSlideLeft());
检查
addEventListener
函数中的部分
menuSlideLeft()

你应该做的是

 var menuBar = document.getElementById('menu-bar').addEventListener('click', menuSlideLeft);

i-e只是传递函数的引用。别这么说。它将在该事件中被调用

从调用该函数的事件侦听器中删除括号。而是使用:

.addEventListener('click', menuSlideLeft);

您正在调用函数,而不是将其作为参数传递。 解决方案:

document.getElementById('menu-bar').addEventListener('click', menuSlideLeft);

addEventListener('click',menuSlideLeft())
menuSlideLeft()中删除
()
。使用类似于
addEventListener('click',menuSlideLeft)
,与
addEventListener('click',searchStart)
的方法相同,您正在添加一个事件侦听器,其输出为
menuSlideLeft
。这很微妙。