2013-10-21 39 views
1

我有這樣的代碼:的Javascript的onclick自動觸發

var bt_empty = document.getElementById("bt_empty"); 
if(bt_empty) 
    bt_empty.onclick = emptyCart(); 

但每次我打開網頁,該按鈕觸發本身的時間。我怎樣才能避免這種情況? 感謝

回答

6

emptyCart()刪除括號:

bt_empty.onclick = emptyCart; 

通過包括括號,它執行的功能,然後分配返回值到onclick事件,而不是分配的實際功能本身。


包含括號的唯一原因是函數返回函數。例如:

function emptyCart(){ 
    return function(){ 
     console.log("clicked"); 
    }; 
} 

bt_empty.onclick = emptyCart(); 
+0

謝謝,它的工作!但是,將返回值分配給onclick事件有什麼意義? (在結構上我的意思是) – Xriuk

+1

除非'emptyCart()'函數返回一個函數(在onclick上執行),否則分配返回值沒有意義。 – MrCode