Jquery Bootstrap 进度条上的 setInterval()
Jquery setInterval() on Bootstrap Progress Bar
我的目标是制作 Bootstrap 的进度条动画,使其每 50 毫秒增加 5%,但我希望它在 25%、55% 和 85% 时暂停 1500 毫秒。这是我尝试过的,但是它在 25% 时暂停,但在 55% 和 85% 时没有暂停。
var value = 5;
setInterval( function() {
$( ".progress-bar" ).css( "width", value + "%" ).attr( "aria-valuenow", value );
if ( value == 25 || value == 55 || value == 85 ) {
setInterval( function() {
value += 5;
}, 1500 );
} else {
value += 5;
}
}, 50 );
它不会停止,因为你有嵌套的间隔。每个间隔都独立执行,直到它们被清除。
即使进度条处于 25%,它会冻结 1500 毫秒,但主间隔仍然执行 - 每 50 毫秒设置一个新的(嵌套在 if
语句中)间隔(当时有 30 个新间隔1500 毫秒中断)。
当进度条为 25% 时,您的这部分代码执行了 30 次:
setInterval( function() {
value += 5;
}, 1500 );
您可以使用 setTimeout
代替:
var value = 0;
function barAnim(){
value += 5;
$( ".progress-bar" ).css( "width", value + "%" ).attr( "aria-valuenow", value );
if ( value == 25 || value == 55 || value == 85 ) {
return setTimeout(barAnim, 1500);
}
return value >= 100 || setTimeout(barAnim, 50);
}
barAnim();
或者,因为 bootstrap 进度条是 "self-animated",使用直接停止点而不是每 50 毫秒更新一次:
var stops = [25, 55, 85, 100];
$.each(stops, function(index, value){
setTimeout(function(){
$( ".progress-bar" ).css( "width", value + "%" ).attr( "aria-valuenow", value );
}, index * 1500);
});
我的目标是制作 Bootstrap 的进度条动画,使其每 50 毫秒增加 5%,但我希望它在 25%、55% 和 85% 时暂停 1500 毫秒。这是我尝试过的,但是它在 25% 时暂停,但在 55% 和 85% 时没有暂停。
var value = 5;
setInterval( function() {
$( ".progress-bar" ).css( "width", value + "%" ).attr( "aria-valuenow", value );
if ( value == 25 || value == 55 || value == 85 ) {
setInterval( function() {
value += 5;
}, 1500 );
} else {
value += 5;
}
}, 50 );
它不会停止,因为你有嵌套的间隔。每个间隔都独立执行,直到它们被清除。
即使进度条处于 25%,它会冻结 1500 毫秒,但主间隔仍然执行 - 每 50 毫秒设置一个新的(嵌套在 if
语句中)间隔(当时有 30 个新间隔1500 毫秒中断)。
当进度条为 25% 时,您的这部分代码执行了 30 次:
setInterval( function() {
value += 5;
}, 1500 );
您可以使用 setTimeout
代替:
var value = 0;
function barAnim(){
value += 5;
$( ".progress-bar" ).css( "width", value + "%" ).attr( "aria-valuenow", value );
if ( value == 25 || value == 55 || value == 85 ) {
return setTimeout(barAnim, 1500);
}
return value >= 100 || setTimeout(barAnim, 50);
}
barAnim();
或者,因为 bootstrap 进度条是 "self-animated",使用直接停止点而不是每 50 毫秒更新一次:
var stops = [25, 55, 85, 100];
$.each(stops, function(index, value){
setTimeout(function(){
$( ".progress-bar" ).css( "width", value + "%" ).attr( "aria-valuenow", value );
}, index * 1500);
});