onclick提示方法未定义

XLab
  • 391

图片描述

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

回复
阅读 15.4k
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>

这样应该可以吧

宣传栏