javascript onclick
世界只因有你
世界只因有你 2017-05-19 10:20:56
0
3
604

今天寫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();這句程式碼的意思是把執行結果賦值給點擊事件哦

PHPzhong

說明你刷新頁面就會執行init函數,而init函數執行後,在綁定onclick時
這行程式碼btn.onclick = btnHandle();
相當於執行btnHandle方法然後把方法的回傳值賦值給了btn .onclick。
而btn.onclick = btnHandle;
相當於btn.onclick = function(){xxxxx};
也就是說把btnHandle這個變數的引用賦給了btn.onclick
所以當點擊事件觸發時會執行btnHandle代表的函數方法

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板