微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决为什么在调用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(){...});
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。