javascript addEventListener不';行不通

javascript addEventListener不';行不通,javascript,click,action,Javascript,Click,Action,我在这个简单的代码中有一些有趣的东西 函数运行(){ var btn=document.getElementById('run'); 函数changeBg(){ document.body.style.backgroundColor=“红色”; } btn.addEventListener(“单击”,更改bg,错误); } 运行函数说明:当您实际运行Run()函数时,eventListener将添加到按钮中。这就是第二次成功的原因 由于未首先执行run(),因此按钮中未添加任何事件侦听器这是完

我在这个简单的代码中有一些有趣的东西

函数运行(){
var btn=document.getElementById('run');
函数changeBg(){
document.body.style.backgroundColor=“红色”;
}
btn.addEventListener(“单击”,更改bg,错误);
}

运行函数
说明:当您实际运行
Run()
函数时,eventListener将添加到按钮中。这就是第二次成功的原因


由于未首先执行
run()
,因此按钮中未添加任何事件侦听器这是完全正常的,您可以在run函数中添加事件侦听器,因此在此之前不会调用它,因为尚未添加事件侦听器

function changeBg() {
    document.body.style.backgroundColor = "red";
}

<button id="run" onclick="changeBg()">Run The Function</button>
函数更改bg(){
document.body.style.backgroundColor=“红色”;
}
运行函数
这就是你所需要的

var btn = document.getElementById('run');
btn.addEventListener("click",changeBg,false);

function changeBg() {
    document.body.style.backgroundColor = "red";
}
您正在运行方法中附加处理程序方法。这就是为什么第二次单击时背景会变为红色。因为第一次单击它时,用于更改背景的事件处理程序方法不会执行

<button id="run" onclick="run()">Run The Function</button>
运行该函数

不需要两个函数。只需直接调用changeBg()

在您的例子中,第一个run()调用正在初始化事件侦听器,而第二个run()调用实际上正在做这项工作

var btn=document.getElementById('run');
函数changeBg(){
document.body.style.backgroundColor=“红色”;
}
btn.addEventListener(“单击”,更改bg,错误)

运行函数
您只是在函数中添加了事件侦听器,因此它在第二次工作,而不是第一次。这是一种非常糟糕的做法,因为事件侦听器将被添加多次(每次单击按钮时再添加一次)。您需要在DOM就绪时添加事件侦听器。而且,由于您已经为click事件添加了事件侦听器,因此不需要内联click事件处理程序(您应该在一个事件处理程序中处理所有内容)

运行该函数
var btn=document.getElementById('run');
函数changeBg(){
document.body.style.backgroundColor=“红色”;
}
btn.addEventListener(“单击”,更改bg,错误);

什么时候调用函数run()?调用了。别担心对其他人来说。(y) 嗯。你有js的SRC吗?简而言之,我想学习jstime@Gaidant没问题。