jQuery进度计时器栏
jQuery progress timer bar
我在jQuery中有一个进度计时器栏-下面是一个例子http://jsfiddle.net/6h74c/
如果我有以毫秒为单位的时间值(600000=10分钟,300000=5分钟等),我如何使条形图在这段时间内递增?
在jsfiddle链接中,我试图将进度条设置为增加835000ms。
然而,setTimeout()决定了条形图增加的频率,它也基于宽度百分比,这似乎不准确——我应该采取不同的做法吗?
function updateProgress(percentage) {
$('#pbar_innerdiv').css("width", percentage + "%"); // probably not ideal
$('#pbar_innertext').text(percentage + "%");
}
function animateUpdate() {
perc++;
updateProgress(perc);
if(perc < 835000) {
timer = setTimeout(animateUpdate, 50); // probably not ideal either?
}
}
Fiddle示例
我会做一些类似的事情:
var start = new Date();
var maxTime = 835000;
var timeoutVal = Math.floor(maxTime/100);
animateUpdate();
function updateProgress(percentage) {
$('#pbar_innerdiv').css("width", percentage + "%");
$('#pbar_innertext').text(percentage + "%");
}
function animateUpdate() {
var now = new Date();
var timeDiff = now.getTime() - start.getTime();
var perc = Math.round((timeDiff/maxTime)*100);
if (perc <= 100) {
updateProgress(perc);
setTimeout(animateUpdate, timeoutVal);
}
}
只需做一些好的老式数学。这似乎是不对的,因为你给出的宽度百分比是"刻度"的值,最终会是835000!意味着您最终拥有"835000%"的宽度!!!
示例
var timer = 0,
perc = 0,
timeTotal = 835000,
timeCount = 50;
function updateProgress(percentage) {
var x = (percentage/timeTotal)*100,
y = x.toFixed(3);
$('#pbar_innerdiv').css("width", x + "%");
$('#pbar_innertext').text(y + "%");
}
function animateUpdate() {
if(perc < timeTotal) {
perc++;
updateProgress(perc);
timer = setTimeout(animateUpdate, timeCount);
}
}
$(document).ready(function() {
$('#pbar_outerdiv').click(function() {
clearTimeout(timer);
perc = 0;
animateUpdate();
});
});
jsFiddle演示
描述
这只是每10ms增加一次进度。。。既然你知道它需要的时间,就用这个时间除以100,然后在var timer = setInterval(updateProgressbar, 10);
中使它成为你的时间间隔
HTML
<div id="progressbar"></div>
JS
var progress = 0;
var timer = setInterval(updateProgressbar, 10);
function updateProgressbar(){
$("#progressbar").progressbar({
value: ++progress
});
if(progress == 100)
clearInterval(timer);
}
$(function () {
$("#progressbar").progressbar({
value: progress
});
});
JS Fiddle只为你
JS
var progress = 0;
var timer = setInterval(updateProgressbar, 8350);
function updateProgressbar(){
$("#progressbar").progressbar({
value: ++progress
});
if(progress == 100)
clearInterval(timer);
}
$(function () {
$("#progressbar").progressbar({
value: progress
});
});
您可能想要这样的东西:
var currentTime = new Date().getTime();
perc = (currentTime - StarTime)/duration;
如果也这样设置StartTime,您可以计算每次更新的百分比。
相关文章:
- 在Jquery倒计时计时器上设置每个数字的动画
- 如何在隐藏时暂停jquery计时器
- Jquery时间启动计时器,我有一个计时器的代码,但它在页面加载时启动
- 计时器在使用 jQuery 一分钟后没有触发,或者每 1 分钟后给出一些其他解决方案来触发功能
- 我需要JS/jQuery中的倒计时计时器
- jQuery幻灯片Down&然后在计时器上向上滑动
- 基于一天中的时间的不均匀计数计时器Jquery
- 点击事件的 jQuery 计时器
- 简单的 Jquery 计时器,同时使用分钟和秒
- 为显示/隐藏消息 Jquery 添加计时器 intervar
- Jquery on按钮点击做计时器和进度条
- jQuery重置setInterval计时器
- jQuery显示setTimeout计时器
- jQuery计时器对输入不起作用
- jQuery倒计时计时器部分隐藏
- jQuery进度计时器栏
- 在循环中运行setInterval()计时器-jQuery/JS
- 每 1 分钟启动一次计时器 Jquery
- 设置时间倒计时计时器jquery
- 具有延迟、重置和重新启动的计时器?jQuery