我有HTML代码。我需要一些javascript代码来获取每次迭代的更新值
<progress id="progressBar" max="100" value="0"></progress>
for (i = 0; i <= 100; i ++) {
//update progress bar
}
我尝试做这样的事情:
var progressBar = document.getElementById("progressBar");
progressBar.value += i;
但这不起作用。它在循环完成时更新进度条。
答案 0 :(得分:3)
对于虚拟进度条,我会这样做:
<强> HTML 强>
<div id="progress">
<span class="progress-text"></span>
<div class="progress-bar"></div>
</div>
<强>的CSS 强>
#progress {
position:relative;
width:250px;
height:20px;
border:1px solid red;
}
#progress .progress-bar {
background:blue;
height:20px;
width:0%;
display:inline-block;
}
#progress .progress-text {
position:absolute;
z-index:2;
right:0;
}
<强> JQuery的强>
$(document).ready(function() {
var progression = 0,
progress = setInterval(function()
{
$('#progress .progress-text').text(progression + '%');
$('#progress .progress-bar').css({'width':progression+'%'});
if(progression == 100) {
clearInterval(progress);
alert('done');
} else
progression += 10;
}, 1000);
});
您也可以使用JQueryUI Progressbar!
答案 1 :(得分:3)
我挣扎了几天,最后把我学到的东西放到下面这个相当简单的解决方案中,它在HTML页面上放了一个按钮和一个进度条。
单击该按钮时,javascript将开始计数,并在计数进行时更新进度条。按钮定义中的计数设置为默认值4321,但您可以将其更改为您选择的任何值。
<!DOCTYPE html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Progress Bar Demo</title>
<script>
var button;
var count;
var countmax;
var progressbar;
var timerID;
function start(max) {
button = document.getElementById("button");
count = 0;
countmax = max;
progressbar = document.getElementById("bar");
progressbar.max = countmax;
timerID = setInterval(function(){update()},10);
}//end function
function update() {
button.innerHTML = "Counting to " + countmax;
count = count + 100;
progressbar.value = count;
if (count >= countmax) {
clearInterval(timerID);
button.innerHTML = "Ready";
progressbar.value = 0;
}//end if
}//end function
</script>
</head>
<body>
<p>
<button onclick="start(4321)" id="button" style="font-size:18px;">Ready</button><br>
<br>
<progress id="bar" value="0"></progress>
</p>
</body>
</html>
答案 2 :(得分:1)
您需要使用setTimeout编写异步循环,如下所示:
var counter = 0;
(function asyncLoop() {
$('#progressBar').val(counter++);
if (counter <= 100) {
setTimeout(asyncLoop, 50);
}
})();
答案 3 :(得分:0)
$("#progressBar").prop("value",i);
应该将属性值设置为该循环中的任何内容
答案 4 :(得分:0)
$("#progressbar").progressbar({ value: i });
答案 5 :(得分:0)
我知道帖子已经过时了,但万一有人需要它:
$("progress").val(i);
将根据值i
更改进度值。
例如,要上传图像,您可以使用jquery-form库<script src="http://malsup.github.com/jquery.form.js"></script>
。因此,您可以更新此库的progress
函数中的uploadProgress
html标记,如下所示:
uploadProgress: function(event, position, total, percentComplete) {
progressBar.val(percentComplete);
},
如果您想使用progress
标记并在编码中更清晰一点,请参阅jquery-form here的演示并将其与上述知识混合使用。
我希望它有所帮助。
答案 6 :(得分:0)
谨防&#34;必须足够&#34;超时,它们高度依赖于每台机器的速度。
我发现$('progress#id').text(Math.random())
强制UI重绘。