javascript - ture和false的关系
高洛峰
高洛峰 2017-04-10 14:59:16
0
4
463

我下面page2点击后btn应该是false啊,可为什么if括号里的btn还是true,怎么让他变成false

            var btn=true;

            if (btn) {
                alert(btn);
                var timer = setInterval(function() {
                    Push(num);
                }, 500);

            }

            $(".page2").click(function(){
                btn=false;
            });
高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回覆(4)
迷茫
  1. 顺序执行, 所以你能看到alert(btn)结果为true 这是无误的。
  2. 在你点击.page2后 btn已经被赋值false了 这个也是无误的,但是你的计时器已经开始执行了,他只会沿着function() { Push(num); }的内容继续执行,你可能疑惑的是这个。接着看。
  3. 争取方法应该是使用函数clearInterval来停止这个timer
<!DOCTYPE html>
<html>
<head>
    <title>1010000002595041</title>
    <script type="text/javascript" src="https://code.jquery.com/jquery-latest.min.js"></script>
    <script type="text/javascript">
    $(document).ready(function(){ 
        var btn=true;
        if (btn) {
            alert(btn);
            var num = 0;
            var timer = setInterval(function() {
                console.log(num++);
            }, 500);
        }
        $(".page2").click(function(){
            btn=false;
            console.log("clicked");
            alert(btn);
            clearInterval(timer);
            console.log("timer stop");
        });
    }); 
    </script>
</head>
<body>
<button class="page2">click</button>
</body>
</html>

迷茫

if括号里的btn在你执行click事件之前已经写死了啊, alert的时候肯定为true

Ty80

.page2 里面的callback在你点击的时候才会执行吧,之前alert的时候当然是true啦

Ty80

能不能把代码贴全?

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板