函数未定义错误以及头部无包裹如何解决它?

时间:2014-02-11 06:20:36

标签: javascript jquery html

我的<head>

中有一个功能
$('document').ready(function () {
    function shout(msg) {
        alert(msg);
    }
});

<body>

中的按钮

但我得到function shout not defined。为什么?我使用的是Firefox 25。

SO有许多相似的问题,我已经尝试了所有但没有帮助。除了this一个,这可能解决了我的问题。我没有得到答案所说的。请任何人详细说明他在说什么关于两个小提琴,答案和问题完全相同,除了左侧栏上的一些属性更改:onloadNo wrap-in <head>

或者可能是什么问题?

4 个答案:

答案 0 :(得分:1)

您的功能是visible,其中附件document.ready。如果将函数移出document.ready,那么它将在全局范围内访问。

function shout(msg)
{
      alert(msg);
}

答案 1 :(得分:1)

您的函数是在匿名函数内定义的,因此它的名称仅限于该范围。如果您尝试从无法使用的按钮的onclick属性访问它,因为其中的名称会在全局范围内显示。

您有两种解决方案:

一种是在$(document).ready()之外定义函数,因此它将在全局范围内。

另一种是使用jQuery而不是内联属性绑定您的单击处理程序:

$(document).ready(function() {
    $("#somebutton").click(function() {
        shout("Button was clicked");
    });

    function shout(msg) {
        alert(msg);
    }
});

答案 2 :(得分:0)

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

function shout(msg) {
    alert(msg);
}

答案 3 :(得分:0)

因为函数包含在父函数中。函数内部的范围在其外部不可用。

将其分开 -

function shout(msg) {
    alert(msg);
}

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