川建军 发表于 2020-10-18 21:53:34

大佬门在帮帮忙看段小程序

<html>
<head>
    <script id="foo">
      var a = (function(){document.write('foo');})();
    </script>
</head>
<body>
    <button onclick="document.getElementById('foo').a()"></button>
</body>
</html>

这么写为啥不行??(点击按钮后没有显示文字foo)我是新手,别误导我。这应该和作用域有关吧。

如果要“把匿名函数赋值给一个变量,然后在别的地方调用”,应该怎么写????请给出完整代码。

kogawananari 发表于 2020-10-18 22:02:14

<html>
<head>
    <script>
      window.onload = function(){
            //window.foo = document.getElementById('foo') //浏览器自动给你执行了这句
            foo.onclick = function(){
                document.write('foo');
            }
      }
    </script>
</head>
<body>
    <button id='foo'></button>
</body>
</html>

kogawananari 发表于 2020-10-18 22:03:39

(function(){。。。})() 你这个叫自执行函数 是匿名函数的一种 声明了就自己执行了 没办法在别的地方调用的

kogawananari 发表于 2020-10-18 22:06:35

document对象必须在window.onload这个生命周期之后才能访问 你任何页面元素的操作都需要在外面套一个window.onload = function(){}

川建军 发表于 2020-10-18 22:19:24

kogawananari 发表于 2020-10-18 22:06
document对象必须在window.onload这个生命周期之后才能访问 你任何页面元素的操作都需要在外面套一个window ...

window对象是第一个初始化的,对吗

kogawananari 发表于 2020-10-18 22:21:52

川建军 发表于 2020-10-18 22:19
window对象是第一个初始化的,对吗

是的

川建军 发表于 2020-10-18 23:01:57

kogawananari 发表于 2020-10-18 22:21
是的

哦哦,我明白了。
页: [1]
查看完整版本: 大佬门在帮帮忙看段小程序