ture和false的关系


我下面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;
            });

jquery web前端开发 JavaScript

炮姐纯爷们 11 years ago

能不能把代码贴全?

西行寺奈奈子 answered 11 years ago

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

傳統D幻想文庫 answered 11 years ago

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

吃瓜笨蛋圈9 answered 11 years ago

  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>

我靠你谁啊 answered 11 years ago

Your Answer