Javascript 如何在回调setTimeout函数后增加计数器变量?
出于演示目的,我想创建一个多文件上传进度条动画。到目前为止,我创作了以下小提琴作品: 问题是,我想在之前的动画结束时启动下一个动画,但我不知道如何启动。我读过一些关于jQuery的queue方法的文章,但它似乎只是在延迟下工作,而不是回调。但稍后,当有真正的上传时,将有完成上传的回调。我想在百分比为100%时触发回调,然后将百分比重置为0,并启动I+1的超时函数 由于存在dropzone,文件的计数将有所不同。但是很容易计算它们:Javascript 如何在回调setTimeout函数后增加计数器变量?,javascript,jquery,html,css,Javascript,Jquery,Html,Css,出于演示目的,我想创建一个多文件上传进度条动画。到目前为止,我创作了以下小提琴作品: 问题是,我想在之前的动画结束时启动下一个动画,但我不知道如何启动。我读过一些关于jQuery的queue方法的文章,但它似乎只是在延迟下工作,而不是回调。但稍后,当有真正的上传时,将有完成上传的回调。我想在百分比为100%时触发回调,然后将百分比重置为0,并启动I+1的超时函数 由于存在dropzone,文件的计数将有所不同。但是很容易计算它们:var uploads=$('.progress').size()
var uploads=$('.progress').size()代码>
每次尝试启动排队的动画循环都以并行动画或无休止的循环结束。因此,如果有人能给我一些提示、链接、代码片段或任何东西,那就太好了:)
代码:
HTML:
Javascript/jQuery:
var perc = 0;
$('#upload_submit').click(function () {
$('.percentage').eq(0).append("0%");
timeout();
});
function timeout() {
setTimeout(function () {
if (perc <= 95) {
perc = perc + 5;
$('progress').eq(0).val(perc);
$('.percentage').eq(0).html(perc + "%");
}
timeout();
}, 1000);
}
var perc=0;
$(“#上载_提交”)。单击(函数(){
$('.percentage').eq(0).追加(“0%”);
超时();
});
函数超时(){
setTimeout(函数(){
如果(perc首先,您需要一个其他变量。我调用了我的current,它的默认值是0
然后,将您拥有.eq(0)
的每个位置更改为.eq(当前)
之后,在超时中添加else
语句:
else{
++current;
if(!$('.percentage').eq(current).html('0%').length) return;
perc = 0;
}
小提琴:使用以下javascript:
var perc = 0;
$('#upload_submit').click(function () {
perc = 0;
$('.percentage').eq(0).append("0%");
timeout(0);
});
function timeout(item) {
setTimeout(function () {
if (perc <= 95) {
perc = perc + 5;
$('progress').eq(item).val(perc);
$('.percentage').eq(item).html(perc + "%");
timeout(item);
}
else {
item++;
if (item < 4) {
perc = 0;
$('.percentage').eq(item).append("0%");
timeout(item);
}
}
}, 1000);
}
var perc=0;
$(“#上载_提交”)。单击(函数(){
perc=0;
$('.percentage').eq(0).追加(“0%”);
超时(0);
});
功能超时(项目){
setTimeout(函数(){
如果(percvar perc=0;
var fileCounter=0;
$(“#上载_提交”)。单击(函数(){
超时();
});
函数超时(){
setTimeout(函数(){
如果(perc==0){
$('.percentage').eq(fileCounter).append(“0%”);
}
如果(perc)你没有断路器。它会增加文件计数器,然后增加,然后再增加…绝对正确,这更像是一个说明性的例子!不过可以补充一下。我怀疑noone真的很关心它,但至少答案看起来是完整的:)Thx!完美!即使使用fiddle!
else{
++current;
if(!$('.percentage').eq(current).html('0%').length) return;
perc = 0;
}
var perc = 0;
$('#upload_submit').click(function () {
perc = 0;
$('.percentage').eq(0).append("0%");
timeout(0);
});
function timeout(item) {
setTimeout(function () {
if (perc <= 95) {
perc = perc + 5;
$('progress').eq(item).val(perc);
$('.percentage').eq(item).html(perc + "%");
timeout(item);
}
else {
item++;
if (item < 4) {
perc = 0;
$('.percentage').eq(item).append("0%");
timeout(item);
}
}
}, 1000);
}
var perc = 0;
var fileCounter = 0;
$('#upload_submit').click(function () {
timeout();
});
function timeout() {
setTimeout(function () {
if (perc == 0) {
$('.percentage').eq(fileCounter).append("0%");
}
if (perc <= 95) {
perc = perc + 5;
$('progress').eq(fileCounter).val(perc);
$('.percentage').eq(fileCounter).html(perc + "%");
} else {
fileCounter++;
perc = 0;
if($('.percentage').length() < (fileCounter + 1)){
return;
}
}
timeout();
}, 1000);
}