【发布时间】:2015-02-05 19:09:03
【问题描述】:
我已经检查了互联网上的很多进度条,但似乎没有一个可以处理以下情况:
显示一个进度条,它会根据时间在后台自动更新。例如简单来说,jqueryUI 进度条会在后台每秒自动更新一次,直到 5 秒(在 5 秒时达到 100% 并停止)。
可以单击某处将其停止。
这个用例是在简单的儿童游戏中显示进度,但是当任务完成时,有一种简单的方法可以停止进度条。
有没有简单的方法在 jquery/javascript 中实现这个?
编辑,根据 DavidKonrad 接受的答案,我创建了一个小型打字稿类,额外支持 _gProgressAlive 以查询进度是否正在运行,以及在进度完成时采取行动的回调。这是结果,希望对其他人有所帮助!
var _gProgressStatus=0;
var _gProgressMax=3;
var _gProgressIncrement=1000;
var _gProgress;
var _gProgressAlive=false;
class ProgressBar{
static stop() {
clearInterval(_gProgress);
_gProgressAlive=false;
}
static start(endCallback){
_gProgressAlive=true;
_gProgressStatus=0;
_gProgress = setInterval(function() {
_gProgressStatus++;
$("#progressbar").progressbar({
value :_gProgressStatus,max:_gProgressMax
});
if (_gProgressStatus >= _gProgressMax){ ProgressBar.stop();endCallback();}
}, _gProgressIncrement);
}
}
这是主要的 html 测试标记
<script>
ProgressBar.start(function(){
console.log("completed, time's up");
console.log(_gProgressAlive); // false progress is complete, this is the callback
});
console.log(_gProgressAlive); // should output true, progress bar has started
</script>
<div id="progressbar"></div>
【问题讨论】:
-
用 JS/jQuery 编写。使用 Date.now() [ stackoverflow.com/questions/4874408/… ] 存储开始时间。通过 setInterval [w3schools.com/jsref/met_win_setinterval.asp] 在页面加载时运行的某些函数计算百分比并每 0.1 秒更新一次此进度条看起来支持您想要的任何类型的条:jqueryui.com/progressbar/#indeterminate - - - - - - 如果您需要帮助然后在 JS 中回答这个评论,我会给你发布示例代码来控制进度条。
标签: javascript jquery jquery-ui