javascript - js的作用域小问题...
ringa_lee
ringa_lee 2017-04-11 13:09:09
[JavaScript讨论组]
    qdqwdLED STATUS: OFF
    
    

为什么必须把获取status放到点击函数里面才能获取到这个元素,不然status.innerHTML是undefined,这点击事件函数里面也可以使用外部的变量不是吗

ringa_lee
ringa_lee

ringa_lee

全部回复(2)
黄舟

status是window内置属性,这个bug和window下的name的bug一样,所以你换个id名就行。

ringa_lee

谢谢邀请,既然已经有采纳答案了,我来给个建议

建议通过 IIFE 的方式把自己的业务代码封闭起来,避免全局污染,也避免这种变量重名的问题

(function() {
    var btn = document.getElementById("btn");
    var opend = false;
    var status = document.getElementById("status");
    console.log(status);
    console.log(status.innerHTML);
    btn.onclick = function() {
        // var status = document.getElementById('status');
        // console.log(status);
        // console.log(status.innerHTML);
        if (opend) {
            this.innerText = "OFF";
            status.innerHTML = "LED STATUS: ON";
        } else {
            this.innerText = "ON";
            status.innerHTML = "LED STATUS: OFF";
        }
        opend = !opend;
    };
})();

如果需要定义全局变量的话,可以直接给 window.xxxx 赋值

(function() {
    window.app = {
        name: "MyApp"
    };
})();
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号