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

问题描述

| 这是我的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,只是习惯或知道。 以为我会把我的评论当作答案。     ,尝试这个:
$(function() {
    window.foo = function () {
        alert(\'bar\');
    }
});
基本上,您需要将函数公开给全局范围。     ,$(function()函数内部声明的变量和方法只能在其中访问。如果需要在外部使用,则可以在全局名称空间中进行设置,例如
window.functionName = functionName;
    ,您不能,它对那个范围是私有的。     ,我最终要做的事情-首先应该做的事情-为提交按钮添加了一个点击处理程序:
$(\"input[name=\'submitButton\']\").click(function(){...});
    

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...