javascript 为element.onclick添加函数

有段时间没写js了。今天在编一个轮播图的demo时,想用javascript为“下一图片按钮”添加一个onclick事件,于是就写了这么一句。

var rightBtn = document.getElementById('right');
rightBtn.onclick = getFocus(pics,width);

以为大功告成,结果运行的时候发现,不仅rightBtn的click事件没有添加上,并且还自动执行了一遍getFocus。奇怪了,明明把函数完好的赋值过去了呀,参数也没有填错,怎么会出现这种错误呢。

这时候就得请度娘出马了,百度之后发现,原来函数的赋值只能用函数名,就像这样:

rightBtn.onclick = getFocus;

如果给getFocus加上括号的话,函数就会自动执行而不能正确的把函数对象赋给rightBtn.onclick。

问题找到了,可是如果不给加getFocus加括号的话,参数放在哪里?不要了吗?当然不是,解决方法如下:

rightBtn.onclick = function(){
                getFocus(pics,width);
            };

把getFocus封装在一个匿名函数中,这样就可以实现动态给onclick事件句柄赋值,并支持参数的传递。

 

posted @ 2015-01-18 16:11  毅磊  阅读(315)  评论(0)    收藏  举报