正文

用javascript实现进度条2008-08-19 10:28:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/yzrj/37703.html

分享到:

 首选要感谢csdn,因为这套代码是在csdn资源下载页面的那个进度条的基础上修改的,进度条的样式可通过css定义,div对象的创建使用innerHTML, 因为document.createElement("div");会带来内存泄露的问题,虽然这个进度条只占有几k的内存,但是还是把它做的完美些比较好,下面代码中init()方法是必要的,需要在页面初始化的时候初始进度条对象,即window.jtProBar = new syj.ProgressBar.....有了jtProBar 以后就可以通过jtProBar.setPercent来控制进度条的进度条了,例如jtProBar.setPercent(3/100);进度条的状态就为3%,  这个地方只要是小于1的分数即可,例如jtProBar.setPercent(3/278);会按百分比计算显示适当的比例.     下面的代码示例中用到了很多window.xxx 其实这个相当于 在script中定义 全局变量 var xxx= 效果是一样的. <html> <head>  <title>进度条</title>  <!--     简单的javascript进度条    作者:孙钰佳    邮箱:sunyujia@yahoo.cn     blog:http://blog.csdn.net/sunyujia/    转载请保留此段注释  -->     <style type="text/css">      .bgBar{    background: #FFFFFF;    font-family: Arial,Verdana;    border: 1px solid #000000;    font-size: 17;    font-weight: bold;   }      .bgBar div{    background: #DAECC8;    border: 1px solid #FFFFFF;    color:  #308040;    text-align: right;    overflow: hidden;   }  </style>  <script type="text/javascript">   /****************************************************************************************/   //下面代码为进度条的封装   if (syj == null) var syj = {};   //进度条,parent进度条的父控件对象,width进度条的宽度,barClass进度条的css,display是否显示进度条   syj.ProgressBar=function(parent, width , barClass, display) {    this.parent=parent;    this.pixels = width;    this.parent.innerHTML="<div/>";    this.outerDIV = this.parent.childNodes[0];    this.outerDIV.innerHTML="<div/>";    this.fillDIV = this.outerDIV.childNodes[0];    this.fillDIV.innerHTML = "0";    this.fillDIV.style.width = "0px";    this.outerDIV.className = barClass;    this.outerDIV.style.width = (width + 2) + "px";    this.parent.style.display = display==false?'none':'';   }   //更新进度条进度 pct的值要介于0和1之间   syj.ProgressBar.prototype.setPercent = function(pct) {    var fillPixels;    if (pct < 1.0){     fillPixels = Math.round(this.pixels * pct);    }else {     pct = 1.0;       fillPixels = this.pixels;    }    this.fillDIV.innerHTML = Math.round(100 * pct) + "%";    this.fillDIV.style.width = fillPixels + "px";   }   //控制进度条的 显示/隐藏   syj.ProgressBar.prototype.display= function(v){    this.parent.style.display = v==true?'':'none';   }   //初始化进度条   function init(){    window.jtProBar = new syj.ProgressBar(document.getElementById("progressBar"), 450 , "bgBar");   }   /****************************************************************************************/   //下面代码为演示程序   //开始演示   function startAutoDemo(){    if(window.thread==null)     window.thread=window.setInterval("updatePercent()",60);   }   //停止演示   function stopAutoDemo(){    window.clearInterval(window.thread);    window.thread=null;   }   //演示程序   function updatePercent(){    if(window.count==null)window.count=0;    window.count=count%100    jtProBar.setPercent(window.count/100);    window.count++;   }   /****************************************************************************************/  </script> </head> <body onload="init()">  <input type="button" value="100%效果" onclick="window.stop=false;jtProBar.setPercent(1);"/>  <input type="button" value="开始自动演示" onclick="startAutoDemo()"/>  <input type="button" value="停止自动演示" onclick="stopAutoDemo()"/>  <input type="button" value="显示" onclick="jtProBar.display(true)"/>  <input type="button" value="隐藏" onclick="jtProBar.display(false)"/>  <!-- 进度条的父控件 -->  <div id="progressBar"></div> </body></html>

阅读(3118) | 评论(1)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册