JavaScript 实现进度条的两种定时器方案对比

作者:闭包旅人

时间:2026-10-28

浏览:223

本文详细介绍使用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>

实现效果如下图所示:

JavaScript进度条实现概述

基于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>

实现效果如下图所示:

JavaScript进度条实现概述

两种定时器方案的核心区别

第三种情况:对比setTimeout与setInterval的区别

setTimeout() 仅执行一次传入的代码。若需多次调用,应使用 setInterval(),该函数会持续调用指定函数,直到 clearInterval() 被调用、窗口关闭,或在代码内部再次调用 setTimeout() 来实现控制。

希望本文关于JavaScript程序设计的内容能对读者有所帮助。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章