javascript onclick
世界只因有你
世界只因有你 2017-05-19 10:20:56
[JavaScript讨论组]

今天写JS的时候遇到这么一个问题:

function init() {
        var btn = document.getElementById('sort-btn');
        btn.onclick = btnHandle();
    }

上面是我的JS代码部分,这里注意一下,init函数中的第二句,btn.onclick = btnHandle();
我的本意是点击按钮,执行btnHandle函数,可实际情况是刷新页面之后,btnHandle函数直接执行了。
然后我把代码改成这样

function init() {
        var btn = document.getElementById('sort-btn');
        btn.onclick = btnHandle;
    }

把btn.onclick = btnHandle();语句中的()去掉后,代码按我所想的正常运行。
这是为什么?btnHandle 和 btnHandle()

世界只因有你
世界只因有你

全部回复(3)
漂亮男人

btn.onclick接受一个函数,代表当 btn 被点击的时候执行这个函数,而你的btnHandle()代表了执行这个函数,给 btn.onclick的是他的返回值,当然就先执行了。

下面的写法就代表着,当 btn.onclick 时,执行 btnHandle 函数。

世界只因有你

btn.onclick = btnHandle();这句代码的意思是把执行结果赋值给点击事件哦

PHPz

说明你刷新页面就会执行init函数,而init函数执行后,在绑定onclick时
这行代码 btn.onclick = btnHandle();
相当于执行btnHandle方法然后把方法的返回值赋值给了btn.onclick。
而btn.onclick = btnHandle;
相当于btn.onclick = function(){xxxxx};
也就是说把btnHandle这个变量的引用赋给了btn.onclick
所以当点击事件触发时会执行btnHandle代表的函数方法

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号