我有一个html文件,它正确链接到js文件(以及jquery库文件)。
<input type="button" onclick="practice();" id="intro_next_button" value="Practice"/>
在js文件中:
$(window).load(function(){
function practice(){
alert("WORKS");
}
});
如果函数练习在$(window).load(function()
之外,则会运行,但不在它内部时。有很多类似的问题,但是我没有找到一个特别关于onclick event
的问题,但只能在jquery $(window).load(function()
内部工作。
答案 0 :(得分:2)
这不起作用,因为在功能块内定义的任何内容(即通过关键字function或var)都应用该块作为其范围。因此,如果您在块内创建一个变量x,那么您将无法获得该值。
var x = 2;
function test() { var x = 5; }
console.log(x);
打印2。
这些也是竞争风格。通常,如果您使用window.onload或&#34;改进&#34; jQuery $(document).ready你在函数体中绑定事件。
$("#intro_next_button").click(function() { alert("WORKS"); });
答案 1 :(得分:2)
您正在做的是在函数内部定义一个函数,该函数作为参数传递给load()。
onclick正在窗口范围内寻找practice()。
为什么要在加载页面时定义函数?等到加载所以用户可以点击它? 如果是这样,试试这个:
$(window).load(function(){
window.practice = function(){
alert("WORKS");
}
});
答案 2 :(得分:1)
在这种情况下,您的功能仅在您在load
中定义的无限功能中可见。您应该使用click
中的jquery load
附加一个onclick事件(并删除onclick
属性):
$('#buttonid').click(function(){practice();});