函数未定义错误以及头部无换行如何解决它



我的<head>中有一个函数

$('document').ready(function () {
    function shout(msg) {
        alert(msg);
    }
});

还有<body>上的一个按钮

但我越来越function shout not defined.为什么?我正在使用火狐 25。

SO有很多类似的问题,我已经尝试了所有方法,但没有帮助。除了这个,它可能会解决我的问题。我不明白答案在说什么。请任何人详细说明他在说什么,因为两个小提琴,在回答和问题完全相同,除了左侧栏上的一些属性更改:onloadNo 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);
}

最新更新