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

炮姐纯爷们 9 years, 11 months ago

能不能把代码贴全?

西行寺奈奈子 answered 9 years, 11 months ago

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

傳統D幻想文庫 answered 9 years, 11 months ago

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

吃瓜笨蛋圈9 answered 9 years, 11 months 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 9 years, 11 months ago

Your Answer