addEventListener函数是在声明listener时执行的
addEventListener function is being executed when listener is declared
我有这个javascript代码
function change (elem){
if (x==1) elem.innerHTML = "1";
else elem.innerHTML = "not 1";
}
var test = document.getElementById ("abc");
var x=1;
test.addEventListener ("click", change(test));
html看起来像这个
<body>
<div id="abc">a div</div>
</body>
如何防止函数在单击div元素之前执行?现在它只是自己更改innerHTML,我希望它等待点击监听器。
它被立即执行,因为正在立即调用:
test.addEventListener ("click", change(test));
您需要传递一个函数,而不是函数调用的结果:
test.addEventListener("click",
function() {
change(test);
}
);
您应该以以下方式调用函数,例如:
test.addEventListener ("click", function(){change(test)});
下面是一个示例fiddle
test.addEventListener("click", function(){ change(this);});
由于括号的原因,您将立即执行函数change()。
另一种方法是通过引用传递函数,并使用this
获取元素。
function change (){
if (x==1) this.innerHTML = "1";
else this.innerHTML = "not 1";
}
var test = document.getElementById ("abc");
var x=1;
test.addEventListener ("click", change);
相关文章:
- 无法在通过jQuery的ajax加载的页面中执行javascript
- JavaScript执行暂时挂起页面
- 如何在ReactJS JSX中执行嵌套的if-else语句
- 当js函数's已执行
- 哪个先执行
- 在使用Polymer'加载所有json文件后执行方法;s的核心ajax
- HTML表单提交时未执行外部函数
- 在Safari执行javascript之前对其进行修改
- Amd,希望确保某个东西总是最后执行
- 在Windows 10中自动执行例行程序(主要与浏览器交互)
- 递归使用 eval() 是检查程序执行的好方法吗?
- 如何做到这一点,使代码在不传递条件后执行函数
- 如何在执行此特定onclick事件时执行JavaScript函数
- 如何在从浏览缓存加载页面时执行javascript
- Jquery表单验证插件-如果选中复选框,如何在提交时执行某些操作
- Jquery:代码在rails中的页面加载时未执行
- 如何防止jQueryonclick事件中的Ruby方法在页面刷新时执行
- JavaScript动画从不执行
- 为什么onsubmit函数似乎没有执行
- addEventListener函数是在声明listener时执行的