[英]Why is this javascript function running without being called?
$(document).ready(SetupButtonClicks());
function SetupButtonClicks() {
$('#btnJavaPHP').click(DoPHPStuff());
}
function DoPHPStuff() {
//stuff
}
我在我的javascript文件中有这个代码,当我调试它时,我看到它调用SetupButtonClicks()
就像它应该但是在完成后它调用DoPHPStuff()
。 只有在单击btnJavaPHP
时才应调用DoPHPStuff()
。 我究竟做错了什么?
更改SetupButtonClicks函数:
$('#btnJavaPHP').click(DoHPStuff);
你有事情是这样编码的,你告诉JavaScript来调用的函数,而不是把它作为“点击”处理程序。 括号是一个导致函数被调用的运算符 。
删除()
。
通过编写$(document).ready(SetupButtonClicks())
,您将调用 SetupButtonClicks
并将其返回值传递给ready
。
类似地,通过编写$('#btnJavaPHP').click(DoPHPStuff())
,您正在调用 DoPHPStuff
(立即)并将其返回的内容传递给click()
。
您需要通过编写$(document).ready(SetupButtonClicks)
和$('#btnJavaPHP').click(DoPHPStuff)
来传递函数$('#btnJavaPHP').click(DoPHPStuff)
。
function DoPHPStuff() {
//stuff
}
function SetupButtonClicks() {
$('#btnJavaPHP').click(DoPHPStuff);
}
$(document).ready(SetupButtonClicks);
除了函数声明之外,函数标识符后面的一对括号会导致函数执行。 例子:
// function declaration; function not executed
function SetupButtonClicks() {
}
// function executed
SetupButtonClicks();
// function not executed
SetupButtonClicks;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.