阅读(1510) (16)

js进度条

2016-08-10 14:53:22 更新

js页面加载进度条

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="X-UA-Compatible" content="IE=9" />
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>页面加载进度条</title>
    <script src="js/jquery-1.4.2.min.js" type="text/javascript"></script>
    <script type="text/javascript">
        var etControl = {};
        etControl.process 
        etControl.process = function (config) {
            
            /*需要放在html中的body标签后面使用本控件*/
            var count = 0;
            
            var id = "loading";
            
            var el = "#" + id;

            $(

            $("body").append('<div id="' + id + '"></div>');

            

            var divTxt = "#" + id + " div";
            $(el).html(
            $(el).html("<div></div>");
            $(el).attr(
            $(el).attr("style""width: 100px;height: 12px;background: #A0DB0E;padding: 5px;position: fixed;left: 0;top: 0;font-size:12px;");
            $(divTxt).attr(
            $(divTxt).attr("style""width: 1px;height: 12px;background: #F1FF4D;");

            

            /*更新进度条*/
            this.updateProcess = function (percent) {
                setTimeout(
                setTimeout(function () { $(divTxt).animate({ width: percent + "px" }).text(percent + "%") }, ++count * 500);
                
                if (percent == 100) {           /*100%就从页面移除loading标签*/
                    setTimeout(function () {
                        $(el).hide(
                        $(el).hide(500);
                        setTimeout(
                        setTimeout(function () { $(el).remove() }, 500);
                    }, count 
                    }, count * 500 + 800);
                }
            };
        }
                }
            };
        }
    </script>
</head>
<body>
</body>
<script type="text/javascript">
    /*需要放在body标签后面,然后在适当的位置调用updateProcess方法*/
    var p = new etControl.process();
    p.updateProcess(
    p.updateProcess(34);
    p.updateProcess(
    p.updateProcess(57);
    p.updateProcess(
    p.updateProcess(62);
    p.updateProcess(
    p.updateProcess(90);
    p.updateProcess(
    p.updateProcess(100);
</script>
</html>


1.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>
效果图:

js

2.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>
效果图:


3.setTimeout和setInterval区别


setTimeout() 只执行 code 一次。如果要多次调用,请使用 setInterval() ,setInterval() 方法会不停地调用函数,直到 clearInterval() 被调用或窗口被关闭,或者让 code 自身再次调用 setTimeout()。