2014-11-02 82 views
0

我想創建一個onclick事件(javascript),通過按一個按鈕從HTML表單獲取輸入數據。我在我的JS文件中使用window.onload函數。 我的形式看起來像:爲什麼瀏覽器會觸發我的onclick函數?

<div class="set-the-clock"> 
    <form name="settheclock"> 
     <span>Hours: </span><input type="text" name="fhours"><br> 
     <span>Minutes: </span><input type="text" name="fminutes"><br> 
     <span>Seconds: </span><input type="text" name="fseconds"><br> 
     <input type="button" id="send" value="Enter"> 
    </form> 

我的onclick事件:

document.getElementById("send").addEventListener("click",setTheClockByButton()); 

和我setTheClockByButton():

function setTheClockByButton() { 
    alert("wtf"); 
    setTheClock(setHour, setMinute, setSecond); 

} 

,當我按下鑑於谷歌Chrome,與警報跆拳道出現了,所以看起來我的按鈕被「自己」點擊了,我不知道爲什麼:(

+0

我記得(也許不好,但我記不清了),在某些瀏覽器提交按鈕時遺漏,並只有一個按鈕,它就像提交表單。也許是與此有關的一個小故障?只是一個建議,所以我只是對它進行評論 – 2014-11-02 01:47:25

+2

你正在執行你的事件處理程序而不是將它作爲引用傳遞'setTheClockByButton()'應該在'addEventListener'調用 – 2014-11-02 01:50:32

回答

2

刪除setTheClockByButton()中的括號,當你創建一個函數時,你實際上正在設置一個變量。創建函數的漫長過程如下所示。

var functionName = function() { 
    //Your code here 
}; 

因此一個功能分配給一個處理程序,您必須使用功能變量名,但給你打電話加上括號內的功能。在這種情況下,你只需要變量名,所以它看起來像這樣。

document.getElementById("send").addEventListener("click",setTheClockByButton);

0

當您設置事件偵聽器時,您正在執行setTheClockByButton()。離開()

document.getElementById("send").addEventListener("click",setTheClockByButton); 

它不會與這些括號,因爲工作,你調用的函數,而不是將它綁定到事件:

document.getElementById("send").addEventListener("click",setTheClockByButton); 
+0

的'setTheClockByButton'這是問題,謝謝! – formatc2013 2014-11-02 02:00:48

0

setTheClockByButton()如刪除括號。

有關addEventListener基本用法的更多詳細信息,您可以查看here

相關問題