在for循環中設置超時的最佳方法是什麼?我有一個方塊,點擊後,預期的結果是它每500毫秒減少1px。我試圖通過將top屬性的CSS值設置爲i
並以500毫秒的超時值進行封裝來做到這一點。在循環中設置超時
發生什麼事情是「掛起」,看起來像前幾個像素,直到底部發射。
我有什麼迄今爲止低於:
$("#rect").click(function() {
\t for (i = 0; i < 200; i++) {
\t (function(i){
\t setTimeout(function() {
$("#rect").css("top", i)
}, 500);
})(i);
} \t
});
$("#reset").click(function() {
\t $("#rect").css("top", "0");
});
#rect {
position: absolute;
top: 0;
width: 200px;
height: 50px;
background-color: #333;
}
#rect:hover {
cursor: pointer;
}
#reset {
float: right;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<div id="rect"></div>
<button id="reset">reset</button>
Howcome說明在環路內超時i
頂部屬性值不工作?
爲什麼不直接使用['animate'](http://api.jquery.com/animate/)而不是滾動自己的? –
你的計時功能是錯的,應該是500 * i – karthick