我正在嘗試使用javascript制作消失回圈,代碼運行良好..但我想讓回圈在幾次后停止..這是代碼:
$(document).ready(function() {
var j = 0;
var delay = 9000; //millisecond delay between cycles
function cycleThru(){
var jmax = $("ul#cyclelist li").length -1;
$("ul#cyclelist li:eq(" j ")")
.animate({"opacity" : "1"} ,400)
.animate({"opacity" : "1"}, delay)
.animate({"opacity" : "0"}, 400, function(){
(j == jmax) ? j=0 : j ;
cycleThru();
});
};
cycleThru();
});
如果我想在 10 倍后停止回圈,我該怎么辦?
謝謝您的幫助
uj5u.com熱心網友回復:
解決這個問題的一個簡單方法是接受一個cycles引數 in cycleThru,該引數用于指定遞回停止的周期數。
function cycleThru(cycles = Infinity) {
然后向遞回函式添加一個保護子句以停止遞回。
if (cycles <= 0) return;
當您遞回呼叫時,cycleThru將其減cycles一。
cycleThru(cycles - 1);
cycleThru最后通過初始呼叫傳遞周期數。
cycleThru(10);
導致以下代碼:
$(document).ready(function () {
var j = 0;
var delay = 9000; // millisecond delay between cycles
function cycleThru(cycles = Infinity) {
if (cycles <= 0) return;
var jmax = $("ul#cyclelist li").length - 1;
$("ul#cyclelist li:eq(" j ")")
.animate({"opacity" : "1"} ,400)
.animate({"opacity" : "1"}, delay)
.animate({"opacity" : "0"}, 400, function () {
(j == jmax) ? j=0 : j ; // or: j = (j 1) % jmax
cycleThru(cycles - 1);
});
};
cycleThru(10);
});
uj5u.com熱心網友回復:
把這條線var jmax = $("ul#cyclelist li").length -1;放在函式之外。否則每次cycleThru呼叫它都會創建新的j
$(document).ready(function() {
var jmax = $("ul#cyclelist li").length - 1;
var j = 0;
var delay = 9000; //millisecond delay between cycles
function cycleThru() {
$("ul#cyclelist li:eq(" j ")")
.animate({
"opacity": "1"
}, 400)
.animate({
"opacity": "1"
}, delay)
.animate({
"opacity": "0"
}, 400, function() {
if (j !== max) {
j ;
cycleThru();
}
});
};
cycleThru();
});
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/432761.html
標籤:javascript 循环
