Bootstrap 进度条计时器
Bootstrap progress bar timer
首先,你好,我正在使用 Angular.js、Bootstrap、HTML 和 JavaScript(obv 这 2 个)。
所以,我的APP中有如下bootstrap进度条:
<div class="progress">
<div id="theBar" class="progress-bar progress-bar-info progress-bar-striped active" role="progressbar" aria-valuenow="60" aria-valuemin="0" aria-valuemax="100" style="width: 60%">
60%
</div>
</div>
现在,我希望它从 100% 减少到 0%(每个百分比为 1 秒),重点是用它制作一个计时器,在它达到零后,用户可以不再执行指定的操作。我真的不知道该怎么做,或者是否有可能使用 bootstraps 进度条,提前致谢并致以最诚挚的问候。
这是一个例子:
// Code goes here
var i = 100;
var counterBack = setInterval(function () {
i--;
if (i > 0) {
$('.progress-bar').css('width', i + '%');
} else {
clearInterval(counterBack);
}
}, 1000);
// Code goes here
var i = 100;
var counterBack = setInterval(function(){
i--;
if (i > 0){
$('.progress-bar').css('width', i+'%');
} else {
clearInterval(counterBack);
}
}, 1000);
<link href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.2/js/bootstrap.min.js"></script>
<h2>Hello window.setInterval!</h2>
<div class="progress">
<div class="progress-bar" role="progressbar" aria-valuemin="0" aria-valuemax="100" style="width: 100%;">
<span class="sr-only"></span>
</div>
</div>
没有 AngularJS 参与此演示。
shershen使用JavaScript如
document.getElementById("theBar").style.width = "80%";
document.getElementById("theBar").innerHTML = "80%";
你的酒吧将增加到 80%。
您可以使用这种方法构建一个每秒增加 1% 的函数。
更新解决方案
<script>
var i = 100;
var counterBack = setInterval(function(){
i--;
if(i>0){
document.getElementById("theBar").style.width = i+1+"%";
document.getElementById("theBar").innerHTML = i+1+"%";
} else {
clearTimeout(counterBack);
}
}, 1000);
</script>
for循环的代码借鉴了shershen的回答
此解决方案需要ui-bootstrap,计时器以秒计算:
Html:
<uib-progressbar class="progress-striped active" animate="true" value="timer" max="max" type="danger"></uib-progressbar>
Angularjs:
var app = angular.module('demoApp', ['ui.bootstrap']).controller('demoCtrl', function ($scope, $interval) {
$scope.timer = 15;
$scope.max = 15;
var countDown = $interval(function () {
$scope.timer--;
if ($scope.timer <= 0) {
$interval.cancel(countDown);
//TO DO
}
}, 1000);});
首先,你好,我正在使用 Angular.js、Bootstrap、HTML 和 JavaScript(obv 这 2 个)。
所以,我的APP中有如下bootstrap进度条:
<div class="progress">
<div id="theBar" class="progress-bar progress-bar-info progress-bar-striped active" role="progressbar" aria-valuenow="60" aria-valuemin="0" aria-valuemax="100" style="width: 60%">
60%
</div>
</div>
现在,我希望它从 100% 减少到 0%(每个百分比为 1 秒),重点是用它制作一个计时器,在它达到零后,用户可以不再执行指定的操作。我真的不知道该怎么做,或者是否有可能使用 bootstraps 进度条,提前致谢并致以最诚挚的问候。
这是一个例子:
// Code goes here
var i = 100;
var counterBack = setInterval(function () {
i--;
if (i > 0) {
$('.progress-bar').css('width', i + '%');
} else {
clearInterval(counterBack);
}
}, 1000);
// Code goes here
var i = 100;
var counterBack = setInterval(function(){
i--;
if (i > 0){
$('.progress-bar').css('width', i+'%');
} else {
clearInterval(counterBack);
}
}, 1000);
<link href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.2/js/bootstrap.min.js"></script>
<h2>Hello window.setInterval!</h2>
<div class="progress">
<div class="progress-bar" role="progressbar" aria-valuemin="0" aria-valuemax="100" style="width: 100%;">
<span class="sr-only"></span>
</div>
</div>
没有 AngularJS 参与此演示。
shershen使用JavaScript如
document.getElementById("theBar").style.width = "80%";
document.getElementById("theBar").innerHTML = "80%";
你的酒吧将增加到 80%。
您可以使用这种方法构建一个每秒增加 1% 的函数。
更新解决方案
<script>
var i = 100;
var counterBack = setInterval(function(){
i--;
if(i>0){
document.getElementById("theBar").style.width = i+1+"%";
document.getElementById("theBar").innerHTML = i+1+"%";
} else {
clearTimeout(counterBack);
}
}, 1000);
</script>
for循环的代码借鉴了shershen的回答
此解决方案需要ui-bootstrap,计时器以秒计算:
Html:
<uib-progressbar class="progress-striped active" animate="true" value="timer" max="max" type="danger"></uib-progressbar>
Angularjs:
var app = angular.module('demoApp', ['ui.bootstrap']).controller('demoCtrl', function ($scope, $interval) {
$scope.timer = 15;
$scope.max = 15;
var countDown = $interval(function () {
$scope.timer--;
if ($scope.timer <= 0) {
$interval.cancel(countDown);
//TO DO
}
}, 1000);});