onclick提示方法未定义

图片描述

如图所示,第 1 种定义方法是有效的,但是第 2 种显示b方法未定义,请问这是什么原因

阅读 19.2k
3 个回答

在第二种方法里,b()是局部变量,只能在a()的函数体内被访问到。通过onclick="b();"的方式只能访问全局作用域下的b(),很显然全局作用域下b()没有被定义。

html的onclick里的b方法指向window.b
第一种全局定义,实际上就是window.b
第二种b是a方法的局部变量,执行时找不到window.b

<script>
        function a(){
            var b=function(){
                alert('try');
            }
            return b;
        }
        var c=a();
        var newHtml = '<div class="aa" onclick="c();">the new div</div>';
            $('body').append(newHtml);
    </script>

这样应该可以吧

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题