• 立即执行函数问题


     
    <html>
    <body>
        <a>我是好人</a>
        <script> 
            var module1 = (function (mod) {
                mod.a = $("a").html();
                mod.show = function () {
                    alert(mod.a);
                }
                return mod;
            })(window.module1 || {});
            $(function () {
                module1.show();
            })
        </script>
    </body>
    </html>
     
    要想正确获取a中的html,必须将立即执行函数放到html后面
    但是,一般页面开发,习惯性的把js代码放在页头

    <html>
    <head>
    <script> 
    var module1 = (function (mod) {
    mod.a = $("a").html();
    mod.show = function () {
    alert(mod.a);
    }
    return mod;
    })(window.module1 || {});
    $(function () {
    module1.show();
    })
    </script>
    </head>
    <body>
    <a>我是好人</a>
    </body>
    </html>

    就会导致页面dom元素还未加载的时候就执行了定义的函数,访问不到a中元素

    想到的解决办法

    <html>
    <head>
    <script> 
    var module1 = (function (mod) {
    mod.init = function () {
    mod.a = $("a").html();
    }
    mod.show = function () {
    alert(mod.a);
    }
    return mod;
    })(window.module1 || {});
    $(function () {
    module1.show();
    })
    </script>
    </head>
    <body>
    <a>我是好人</a>
    </body>
    </html>

    您有什么好的建议吗
    推荐大家读下这篇关于javascript模块化管理的文章
    欢迎大家多多交流
  • 相关阅读:
    HEOI2018——welcome to NOI2018
    【HEOI 2018】Day2 T2 林克卡特树
    【康托展开】
    【省选模拟测试3】
    【BZOJ 2850】巧克力王国
    【BZOJ 3569】 DZY Loves Chinese II
    【BZOJ 4652】【NOI 2016】循环之美
    【BZOJ 3534】: [Sdoi2014]重建
    mysql 的研究
    mysql 的研究
  • 原文地址:https://www.cnblogs.com/shihao316558512/p/9737043.html
Copyright © 2020-2023  润新知