javascript - Masalah dengan pemasa dalam setiap kaedah
为情所困
为情所困 2017-05-18 10:58:13
0
1
380
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>each</title>
<script type="text/javascript" src="http://libs.baidu.com/jquery/1.9.1/jquery.js"></script>
</head>
<body>
    <ul>
        <li class="on">0</li>
        <li class="on">0</li>
        <li class="on">0</li>
        <li class="on">0</li>
        <li class="on">0</li>
        <li class="on">0</li>
        <li class="on">0</li>
        <li class="on">0</li>
    </ul>
<script type="text/javascript">
    var num = 0,
    timer = null;
    $(".on").each(function (index, value) {
        timer = setInterval(function(){
            if (num == 900) {
                clearInterval(timer);
            }else{
                num++;
            }
            $(value).text(num);
        },50)
    })
 
</script>
</body>
</html>

Soalan pertama ialah sama ada penampilan akhir yang diperolehi oleh if(num==1000) dan if(num==900) adalah berbeza? Apabila num==900, kecuali yang terakhir yang berbeza dengan beberapa 900, yang lain semuanya 900. Apabila 1000, bolehkah semua li menjadi 1000?
Soalan kedua ialah fungsi dalam timer ditulis begini Kenapa hanya li terakhir dihentikan dan li yang lain tidak boleh dihentikan?

    timer = setInterval(function(){
        if (num == 998) {
            clearInterval(timer);
        }
        num++;
        $(value).text(num);
    },50)
为情所困
为情所困

membalas semua(1)
我想大声告诉你

pemasa ialah pembolehubah global, dan rujukannya kepada pemasa terikat terakhir Apabila clearInterval, hanya pemasa terikat terakhir dihentikan hanya kerana nombor tidak lagi meningkat pemasa, anda akan mendapati hanya pemasa terakhir telah berhenti

Mengapa 1000 seperti ini dan 900 tidak, ini kerana 1000/8 boleh dibahagikan dan bergantung kepada bilangan elemen li Ia hanya kebetulan dan tiada sebab yang istimewa

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan