我的<head>
中有一个函数
$('document').ready(function () {
function shout(msg) {
alert(msg);
}
});
还有<body>
上的一个按钮
但我越来越function shout not defined
.为什么?我正在使用火狐 25。
SO有很多类似的问题,我已经尝试了所有方法,但没有帮助。除了这个,它可能会解决我的问题。我不明白答案在说什么。请任何人详细说明他在说什么,因为两个小提琴,在回答和问题完全相同,除了左侧栏上的一些属性更改:onload
和No wrap-in <head>
或者可能有什么问题?
您的函数visible
在它的外壳中,即document.ready
。如果将函数移出document.ready
则它将在全局范围内访问。
function shout(msg)
{
alert(msg);
}
您的函数是在匿名函数中定义的,因此它的名称仅限于该范围。如果您尝试从按钮的 onclick
属性访问它,则不起作用,因为那里的名称在全局范围内看起来。
您有两种解决方案:
一种是在$(document).ready()
之外定义函数,因此它将在全局范围内。
另一种是使用 jQuery 而不是内联属性绑定您的点击处理程序:
$(document).ready(function() {
$("#somebutton").click(function() {
shout("Button was clicked");
});
function shout(msg) {
alert(msg);
}
});
因为函数包装在父函数中。函数内部的作用域在其外部不可用。
把它分开——
function shout(msg) {
alert(msg);
}
$('document').ready(function{
shout('AWESOME');
});
$('document').ready(function {
shout('message');
});
function shout(msg) {
alert(msg);
}