RT
<body onload="initDate(document.form1.year,document.form1.month,document.form1.day,yyyy,mm,dd)">
<select name="year" onchange="change(this, document.form1.month, document.form1.day)"></select>&nbsp;年
<select name="month" onchange="change(document.form1.year, this, document.form1.day)"></select>&nbsp;月<select name="day"></select>&nbsp;日
</body>
<script language="JavaScript">   
      <!--   
      function initDate(year,month,day,YY,MM,DD)   
      {   
            //每个月的初始天数   
          MonDays = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];   
           //当前的年份   
          var y = YY;   
          //当前的月份   
          var m = MM; //javascript月份为0-11   
          //但前的天份   
          var d = DD;    
             
            //以今年为准,向后2年,填充年份下拉框   
          for (var i = (y-50); i < (y+50); i++)   
            {   
            year.options.add(new Option(i,i));   
            }   
            //选中今年   
            year.value=y;   
  
          //填充月份下拉框   
          for (var i = 1; i <= 12; i++)   
            {   
                month.options.add(new Option(i,i));   
            }   
            //选中当月   
            month.value = m;   
                   
            //获得当月的初始化天数   
            var n = MonDays[m-1];   
            //如果为2月,天数加1   
            if (m == 2 && isLeapYear(year.options[year.selectedIndex].value))   
                  n++;   
            //填充日期下拉框   
            createDay(n,day);    
            //选中当日   
            day.value = d;   
      }   
  
      function change(year,month,day) //年月变化,改变日   
      {   
           var y = year.options[year.selectedIndex].value;   
           var m = month.options[month.selectedIndex].value;   
           //if (m == "" ){  clearOptions(day); return;}   
           var n = MonDays[m - 1];   
           if ( m ==2 && isLeapYear(y))   
           {   
               n++;   
           }   
           createDay(n,day)   
      }  
      function createDay(n,day) //填充日期下拉框   
      {   
          //清空下拉框   
           clearOptions(day);   
           //几天,就写入几项   
           for(var i=1; i<=n; i++)   
           {   
              day.options.add(new Option(i,i));   
           }   
      } 
        function clearOptions(ctl)//删除下拉框中的所有选项   
      {   
            for(var i=ctl.options.length-1; i>=0; i--)   
            {   
              ctl.remove(i);   
          }   
      }   
      function isLeapYear(year)//判断是否闰年   
      {    
          return((year%4 == 0 && year%100 != 0) || year%400 == 0);   
      }   
      //-->   
   </script>   

解决方案 »

  1.   

    改成jquery好像没有什么优势呀?
    jquery的优势就是对DOM的操作,你这只是一个日期选择,没有必要吧?(加载一个50多K的文件)
    有点得不偿失呀!!!
      

  2.   

    IE7 和firefox 兼容  可IE8不兼容 
      

  3.   

    如果是日期选择器,jquery有很成熟的插件
      

  4.   


    // 我这JQ也是先学现卖 你看看能用就将就用 呵呵
    <script src="jquery.js"></script>
    <body> 
    <select name="year" id="year"> </select>&nbsp;年 
    <select name="month" id="month"> </select>&nbsp;月 
    <select name="day" id="day"> </select>&nbsp;日 
    </body> 
    <script language="JavaScript">  
         <!--  
    var Selector = function(){
    var d = new Date(), y = d.getFullYear(), m = d.getMonth() + 1, day = d.getDate();
    var initDate = function() {
    createOpt($('#year'), y - 10, (y + 50), y);
    createOpt($('#month'), 1, 12, m);
    createOpt($('#day'), 1, day, day);
    };
    var bindEvents = function(){
    $('#month,#year').bind('change', function(){
    createOpt($('#day'), 1, new Date($('#year').val(),$('#month').val(),0).getDate(), 1);
    });
    }; var createOpt = function(obj, start, end, sign){
    var html = ''; obj.html('');
    for(var i = start; i <= end; i++){
    html += '<option value=' + i + ((i == sign) ? ' selected = true' : '')+'>' + i + '</option>';
    }
    obj.html(html);
    };
    return {
    init: function(){
    initDate();
    bindEvents();
    }
    } }(); Selector.init();
       </script>