2014-11-02 71 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

相关问题