浏览 7692 次
锁定老帖子 主题:JS 模拟上传进度条
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (9)
|
|
---|---|
作者 | 正文 |
发表时间:2009-11-12
最后修改:2009-11-12
<!doctype html public "-//W3C//DTD HTML 4.01//EN' 'http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"/> <title>JS模擬上傳進度條</title> </head> <body> </body> <script type="text/javascript"> var bind = function(obj,func){ return function(){ func.apply(obj,arguments); }; }; var uploadBAR=function(container){ container=(!document.getElementById(container))?this.createContainer(container):document.getElementById(container); this.ostart = container.getElementsByTagName('input')[0]; this.oinit = container.getElementsByTagName('input')[1]; this.container=container; this.nBar=container.id+'_uploadBAR'; this.total=95; }; uploadBAR.prototype = { addEventHandler:function(obj, type, func) { if(!obj){return;} if(obj.addEventListener){obj.addEventListener(type, func, false);} else if(obj.attachEvent){obj.attachEvent("on" + type, func);} else{obj["on" + type] = func;} }, on:function(e){ this.addEventHandler(this.ostart,'click',bind(this,this.start)); this.addEventHandler(this.oinit,'click',bind(this,this.init)); }, init:function(e){ this.oinit.blur(); if(this.up!=undefined){ clearInterval(this.up); } this.x=this.y=0; this.ostart.value='start'; this.ostart.disabled=false; if(document.getElementById(this.nBar)){ var pBar=document.getElementById(this.nBar).parentNode; pBar.removeChild(document.getElementById(this.nBar)); if(pBar.getElementsByTagName('div').length==0){document.body.removeChild(pBar);} } }, setTime:function(){ this.x++; }, createContainer:function(oName){ var buildStart=document.createElement('input'); buildStart.value='start'; buildStart.type='button'; var buildInit=document.createElement('input'); buildInit.value='init'; buildInit.type='button'; var oDIV=document.createElement('div'); oDIV.id=oName; oDIV.appendChild(buildStart); oDIV.appendChild(buildInit); document.body.appendChild(oDIV); buildStart=buildInit=null; return oDIV; }, createBAR:function(){ if(document.getElementById(this.nBar)!=undefined){return;} if(document.getElementById('bar_container')==undefined){ var Barcontainer=document.createElement('div'); Barcontainer.id="bar_container"; Barcontainer.style.width="200px"; Barcontainer.style.border="1px solid #999"; Barcontainer.style.backgroundColor="#ccc"; Barcontainer.style.overflowX="hidden"; Barcontainer.style.position=(document.all)?"absolute":"fixed"; var bHeight=(document.documentElement.clientHeight-18)/2+"px", bWeight=(document.documentElement.clientWidth-parseInt(Barcontainer.style.width))/2+"px"; Barcontainer.style.top=bHeight; Barcontainer.style.left=bWeight; document.body.appendChild(Barcontainer); } var newBar=document.createElement('div'); newBar.innerHTML=' '; newBar.id=this.nBar; newBar.style.border="5px solid #ccc"; document.getElementById('bar_container').appendChild(newBar); }, setBAR:function(xx){ var BAR=document.getElementById(this.nBar); BAR.style.backgroundColor=(xx==100)?"#00ff00":"#333"; BAR.style.width = xx+"%"; BAR.style.textAlign="center"; BAR.style.color = "#FFF"; BAR.style.fontWeight = "bold"; if(xx==this.total){ BAR.innerHTML = "complete"; this.ostart.value='start'; this.ostart.disabled=true; setTimeout(bind(this,this.init),1000); } }, go:function(xx){ var ostart=this.ostart,x=this.x,total=this.total,_x=bind(this,this.setTime),_bar=bind(this,this.setBAR); this.up=setInterval(function(){ if(x<total){ x++; _x(); } else{ var _up=bind(this,this.up); clearInterval(_up); this.value=='start'; this.disabled=true; } _bar(x); },10); }, run:function(){ this.ostart.blur(); if(this.x==undefined||this.x==this.total){this.x=0;this.y=0;} this.ostart.value=(this.ostart.value=='start')?"pause":"start"; this.y++; clearInterval(this.up); if(this.y>1){this.y=0;return;} this.go(this.x); }, start:function(){ var createBAR=bind(this,this.createBAR); var run=bind(this,this.run); createBAR(); run(); } }; var bar1=new uploadBAR('upload'); bar1.on(); var bar2=new uploadBAR('upload1'); bar2.on(); </script> </html> 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-11-18
逻辑看懂了,可是没运行出来
|
|
返回顶楼 | |
发表时间:2009-11-18
楼猪怎么不给出个效果图。。。。。。
|
|
返回顶楼 | |
发表时间:2009-11-18
tobeno1 写道 逻辑看懂了,可是没运行出来
看看你的文件本身編碼是否為utf-8無bom,如果是gb2312就不行了 |
|
返回顶楼 | |
发表时间:2009-11-19
以前写过一个ajax轮询到后台查询进度然后返回显示
|
|
返回顶楼 | |