模仿VS控件Numberdown,实现小时分钟秒的计时器

  javascript模仿VS控件NumberDown控件的效果,并且实现小时分钟和秒的计时器,通过点击控件按钮上的上/下按钮增加或者减少时间。

效果图
Numberdown计时器

示例效果点击这里
示例下载点击这里

  TimePicker类库主要说明。小时/分钟/秒可以手动输入,如果输入的数据格式不正确会自动变为原始数据00.
构造函数参数speed:指定数字增长的速度,单位ms
方法render:将Numberdown计时器绘制到容器内并呈现出来,参数为容器的Id
方法getValue:获取小时,分钟,秒的值用冒号连接在一起的字符串

示例代码
+展开
-HTML
<!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="content-type" content="tex/html;charset=utf-8" />
    <title>模仿VS控件Numberdown,实现小时分钟秒的计时器--编程设计网</title>
    <style type="text/css">
        .timepicker{border:solid 1px #999;width:100px;font-size:13px;height:20px;}
        .timepicker .left{float:left;width:75px;padding-left:5px;}
        .timepicker .left input{width:20px;border:0px;text-align:center;height:16px;}
        .timepicker .right{float:right;}
        .timepicker .right img{cursor:pointer;}
    
</style> 
    <meta name="Keywords" content="javascript计时器,秒表计时器,VS 控件 NumberDown控件效果"/>
    <meta name="Description" content="模仿VS控件NumberDown控件的效果,并且实现小时分钟和秒的计时器,通过点击控件按钮上的上/下按钮增加或者减少时间。"/>
</head>
<body>
开始时间<span id="spStart"></span><br >
结束时间<span id="spEnd"></span>
<script type="text/javascript">
function TimePicker(speed){
  var me=this;
  this.render=function(pId){
    var dv=document.createElement('div');
    dv.className='timepicker';
    dv.innerHTML='<div class="left"><input type="text" maxlength="2" value="00" /><label>:</label><input type="text" maxlength="2"  value="00"/><label>:</label><input type="text" maxlength="2" value="00" /></div>\
                 <div class="right"><img src="up.gif" title="增加" /><br /><img src="down.gif" title="减少"  /></div><div style="clear:both"></div>';
    document.getElementById(pId).appendChild(dv);
    this.inputs=dv.getElementsByTagName('input');
    this.imgs=dv.getElementsByTagName('img');    
    this.inputs[0].onblur=function(){me.inputBlurHandler(this,true);}
    this.inputs[1].onblur=this.inputs[2].onblur=function(){me.inputBlurHandler(this);}
    this.imgs[0].onmousedown=function(){me.imgMouseDownHandler(1);}
    this.imgs[1].onmousedown=function(){me.imgMouseDownHandler(-1);}
    this.imgs[0].onmouseup=this.imgs[1].onmouseup=function(){me.go=false;}
  }
  this.getValue=function(){return this.inputs[0].value+':'+this.inputs[1].value+':'+this.inputs[2].value;}
  this.padding=function(v){if(v<10)return '0'+v.toString();return v;}  
  this.inputBlurHandler=function(obj,isHour){
    if(!/^\d{1,2}$/.test(obj.value))obj.value='00';
    else{
      var v=parseInt(obj.value,10);
      if((isHour&&v>=24)||(!isHour&&v>=60))obj.value='00';
    }
  }
  this.increase=function(step){
    var h=parseInt(this.inputs[0].value,10),m=parseInt(this.inputs[1].value,10),s=parseInt(this.inputs[2].value,10);
    s+=step;
    if(s>=60||s<0){m+=s<0?-1:1;s=s<0?59:0;}
    if(m>=60||m<0){h+=m<0?-1:1;m=m<0?59:0;}
    if(h>=24||h<0)h=h<0?23:0;
    this.inputs[2].value=this.padding(s);
    this.inputs[1].value=this.padding(m);
    this.inputs[0].value=this.padding(h);
    if(me.go)setTimeout(function(){me.increase(step);},speed);
  }
  this.imgMouseDownHandler=function(step){
    this.go=true;
    setTimeout(function(){me.increase(step);},speed);
  }
}
var tp1=new TimePicker(200),tp2=new TimePicker(100);
tp1.render('spStart');
tp2.render('spEnd');
</script> </body></html>

加支付宝好友偷能量挖...


原创文章,转载请注明出处:模仿VS控件Numberdown,实现小时分钟秒的计时器

评论(0)Web开发网
阅读(228)喜欢(0)JavaScript/Ajax开发技巧