一个下拉时间

< html >

< head >
< meta  http-equiv ="Content-Type"  content ="text/html; charset=gb2312" >
< title > 如何实现一个日期下拉菜单 </ title >
< script  type ="text/javascript" >
function  DateSelector(selYear, selMonth, selDay)
{
    
this .selYear  =  selYear;
    
this .selMonth  =  selMonth;
    
this .selDay  =  selDay;
    
this .selYear.Group  =   this ;
    
this .selMonth.Group  =   this ;
    
//  给年份、月份下拉菜单添加处理onchange事件的函数
     if (window.document.all  !=   null //  IE
     {
        
this .selYear.attachEvent( " onchange " , DateSelector.Onchange);
        
this .selMonth.attachEvent( " onchange " , DateSelector.Onchange);
    }

    
else   //  Firefox
     {
        
this .selYear.addEventListener( " change " , DateSelector.Onchange,  false );
        
this .selMonth.addEventListener( " change " , DateSelector.Onchange,  false );
    }


    
if (arguments.length  ==   4 //  如果传入参数个数为4,最后一个参数必须为Date对象
         this .InitSelector(arguments[ 3 ].getFullYear(), arguments[ 3 ].getMonth()  +   1 , arguments[ 3 ].getDate());
    
else   if (arguments.length  ==   6 //  如果传入参数个数为6,最后三个参数必须为初始的年月日数值
         this .InitSelector(arguments[ 3 ], arguments[ 4 ], arguments[ 5 ]);
    
else   //  默认使用当前日期
     {
        
var  dt  =   new  Date();
        
this .InitSelector(dt.getFullYear(), dt.getMonth()  +   1 , dt.getDate());
    }

}


//  增加一个最大年份的属性
DateSelector.prototype.MinYear  =   1900 ;

//  增加一个最大年份的属性
DateSelector.prototype.MaxYear  =  ( new  Date()).getFullYear();

//  初始化年份
DateSelector.prototype.InitYearSelect  =   function ()
{
    
//  循环添加OPION元素到年份select对象中
     for ( var  i  =   this .MaxYear; i  >=   this .MinYear; i -- )
    
{
        
//  新建一个OPTION对象
         var  op  =  window.document.createElement( " OPTION " );
        
        
//  设置OPTION对象的值
        op.value  =  i;
        
        
//  设置OPTION对象的内容
        op.innerHTML  =  i;
        
        
//  添加到年份select对象
         this .selYear.appendChild(op);
    }

}


//  初始化月份
DateSelector.prototype.InitMonthSelect  =   function ()
{
    
//  循环添加OPION元素到月份select对象中
     for ( var  i  =   1 ; i  <   13 ; i ++ )
    
{
        
//  新建一个OPTION对象
         var  op  =  window.document.createElement( " OPTION " );
        
        
//  设置OPTION对象的值
        op.value  =  i;
        
        
//  设置OPTION对象的内容
        op.innerHTML  =  i;
        
        
//  添加到月份select对象
         this .selMonth.appendChild(op);
    }

}


//  根据年份与月份获取当月的天数
DateSelector.DaysInMonth  =   function (year, month)
{
    
var  date  =   new  Date(year, month,  0 );
    
return  date.getDate();
}


//  初始化天数
DateSelector.prototype.InitDaySelect  =   function ()
{
    
//  使用parseInt函数获取当前的年份和月份
     var  year  =  parseInt( this .selYear.value);
    
var  month  =  parseInt( this .selMonth.value);
    
    
//  获取当月的天数
     var  daysInMonth  =  DateSelector.DaysInMonth(year, month);
    
    
//  清空原有的选项
     this .selDay.options.length  =   0 ;
    
//  循环添加OPION元素到天数select对象中
     for ( var  i  =   1 ; i  <=  daysInMonth ; i ++ )
    
{
        
//  新建一个OPTION对象
         var  op  =  window.document.createElement( " OPTION " );
        
        
//  设置OPTION对象的值
        op.value  =  i;
        
        
//  设置OPTION对象的内容
        op.innerHTML  =  i;
        
        
//  添加到天数select对象
         this .selDay.appendChild(op);
    }

}


//  处理年份和月份onchange事件的方法,它获取事件来源对象(即selYear或selMonth)
//
 并调用它的Group对象(即DateSelector实例,请见构造函数)提供的InitDaySelect方法重新初始化天数
//
 参数e为event对象
DateSelector.Onchange  =   function (e)
{
    
var  selector  =  window.document.all  !=   null   ?  e.srcElement : e.target;
    selector.Group.InitDaySelect();
}


//  根据参数初始化下拉菜单选项
DateSelector.prototype.InitSelector  =   function (year, month, day)
{
    
//  由于外部是可以调用这个方法,因此我们在这里也要将selYear和selMonth的选项清空掉
     //  另外因为InitDaySelect方法已经有清空天数下拉菜单,因此这里就不用重复工作了
     this .selYear.options.length  =   0 ;
    
this .selMonth.options.length  =   0 ;
    
    
//  初始化年、月
     this .InitYearSelect();
    
this .InitMonthSelect();
    
    
//  设置年、月初始值
     this .selYear.selectedIndex  =   this .MaxYear  -  year;
    
this .selMonth.selectedIndex  =  month  -   1 ;
    
    
//  初始化天数
     this .InitDaySelect();
    
    
//  设置天数初始值
     this .selDay.selectedIndex  =  day  -   1 ;
}

</ script >
</ head >
< body >
< select  id ="selYear" ></ select >
< select  id ="selMonth" ></ select >
< select  id ="selDay" ></ select >
< script  type ="text/javascript" >
var  selYear  =  window.document.getElementById( " selYear " );
var  selMonth  =  window.document.getElementById( " selMonth " );
var  selDay  =  window.document.getElementById( " selDay " );

//  新建一个DateSelector类的实例,将三个select对象传进去
new  DateSelector(selYear, selMonth ,selDay,  2004 2 29 );
//  也可以试试下边的代码
//
 var dt = new Date(2004, 1, 29);
//
 new DateSelector(selYear, selMonth ,selDay, dt);
</ script >
</ body >
</ html >

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值