javascript - 为什么在 document.ready() 中声明的函数在调用时未定义?

标签 javascript jquery methods undefined

这是我的 HTML/JavaScript:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
    <script type="text/javascript" src="/script/jquery.js"></script>
    <script type="text/javascript">
        $(function(){
            var $str = "hello world";

            function foo() {
                alert($str);
            }
        });
    </script>
</head>
<body>
    <form name="statusUpdateForm" method="post">
        <input type="button" name="submitButton" value=" " onclick="foo();" />
    </form>
</body>
</html>

当我单击该按钮时,我收到一个 JavaScript 错误,指出 foo 未定义。如何调用在 document.ready() 中声明的 JavaScript 函数??

最佳答案

基本上,您将函数的作用域放置在另一个函数中。

想象一下:

<script>
  document.onload = function(){
    function foo(){
      alert('bar');
    }
  };
  foo();
</script>

这就是您想要实现的目标的传真。就像函数内定义的变量在函数外不受限制一样,函数名称也具有相同的特征。

旁注 JavaScript 不需要在变量名称上使用 $ 前缀(尽管就名称而言是可以接受的)。我不知道您是否来自 PHP,是否只是习惯或了解。

我想我会把我的评论作为答案。

关于javascript - 为什么在 document.ready() 中声明的函数在调用时未定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6129548/

相关文章:

javascript - 无法从javascript中的数组获取/获取键

javascript - 仅获取 json 数组中的第 4 个元素

jquery - 使用 jQuery 和 asp.net 转发器自动完成填充 ID

javascript - 如何将方法添加到由构造函数创建的数组对象

javascript - 如果没有要显示的 child ,Kendo UI treeview 会删除 kendo ui treeview 中的展开箭头 - 无法正常工作

javascript - 如何将 d3.js 选择设置为单个元素的样式?

javascript - Highcharts 问题更新图表类型 : not recognizing highcharts functions

javascript - Mocha 测试与焦点相关的行为(Backbone/CoffeeScript 应用程序)

python - 构造方法名

c# - 为什么调用此列表方法会返回不可访问错误?