本文详细介绍使用JavaScript实现进度条的两种常用方法:基于setTimeout的递归调用与基于setInterval的循环调用。通过对比两者的执行机制、代码结构及适用场景,帮助开发者根据实际需求选择合适的定时器方案,并附带完整的HTML/CSS/JS实现代码供参考。
JavaScript进度条实现概述
本文详细介绍使用JavaScript实现进度条的两种常用方法,并通过具体代码示例进行说明,供开发者参考。
基于setTimeout的进度条实现
第一种方法:使用setTimeout和clearTimeout
<html>
<head>
<title>进度条</title>
<style type="text/css">
.container{
width:450px;
border:1px solid #6C9C2C;
height:25px;
}
#bar{
background:#95CA0D;
float:left;
height:100%;
text-align:center;
line-height:150%;
}
</style>
<script type="text/javascript">
function run(){
var bar = document.getElementById("bar");
var total = document.getElementById("total");
bar.style.width=parseInt(bar.style.width) + 1 + "%";
total.innerHTML = bar.style.width;
if(bar.style.width == "100%"){
window.clearTimeout(timeout);
return;
}
var timeout=window.setTimeout("run()",100);
}
window.onload = function(){
run();
}
</script>
</head>
<body>
<div class="container">
<div id="bar" style="width:0%;"></div>
</div>
<span id="total"></span>
</body>
</html>
实现效果如下图所示:

基于setInterval的进度条实现
第二种方法:使用setInterval和clearInterval
<html>
<head>
<title>进度条</title>
<style type="text/css">
.processcontainer{
width:450px;
border:1px solid #6C9C2C;
height:25px;
}
#processbar{
background:#95CA0D;
float:left;
height:100%;
text-align:center;
line-height:150%;
}
</style>
<script type="text/javascript">
function setProcess(){
var processbar = document.getElementById("processbar");
processbar.style.width = parseInt(processbar.style.width) + 1 + "%";
processbar.innerHTML = processbar.style.width;
if(processbar.style.width == "100%"){
window.clearInterval(bartimer);
}
}
var bartimer = window.setInterval(function(){setProcess();},100);
window.onload = function(){
bartimer;
}
</script>
</head>
<body>
<div class="processcontainer">
<div id="processbar" style="width:0%;"></div>
</div>
</body>
</html>
实现效果如下图所示:

两种定时器方案的核心区别
第三种情况:对比setTimeout与setInterval的区别
setTimeout() 仅执行一次传入的代码。若需多次调用,应使用 setInterval(),该函数会持续调用指定函数,直到 clearInterval() 被调用、窗口关闭,或在代码内部再次调用 setTimeout() 来实现控制。
希望本文关于JavaScript程序设计的内容能对读者有所帮助。