<!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)
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