look:<script type="text/javascript">  
         function createSelect(ActionFlag) {  
           var selYear = document.getElementById("tYEAR");  
           var selMonth = document.getElementById("tMON");  
           var selDay = document.getElementById("tDAY");  
           var dt = new Date();                if(ActionFlag == 1) {  
                  MaxYear = dt.getFullYear();  
                  MinYear = dt.getFullYear()-40;                for(var i = MaxYear; i >= MinYear; i--) {  
                   var op = document.createElement("OPTION");  
                   op.value = i;  
                   op.innerHTML = i;  
                   selYear.appendChild(op);  
                 }  
                 //selYear.selectedIndex = 0;                  for(var i = 1; i  < 13; i++) {  
                      var op = document.createElement("OPTION");  
                      op.value = i;  
                      op.innerHTML = i;  
                      selMonth.appendChild(op);  
                     }  
                  //selMonth.selectedIndex = dt.getMonth();  
                 }                var date = new Date(selYear.value, selMonth.value, 0);  
               var daysInMonth = date.getDate();  
                selDay.options.length = 0;                 for(var i = 1; i  <= daysInMonth ; i++) {  
                   var op = document.createElement("OPTION");  
                   op.value = i;  
                   op.innerHTML = i;  
                   selDay.appendChild(op);  
                  }  
                  //alert();  
                //selDay.selectedIndex = dt.getDate() - 1;  
               }  
        </script>  

解决方案 »

  1.   

    谢谢楼上,还有两个个问题请教下:
    1,如何使下拉菜单运行后显示的以选日期为某个以设定好的DATE类型记录的值,比如该记录在数据库中为2004-04-022,通过下拉框选择能对日期进行修改,并以DATE类型存入数据库,又该如何获取呢?
      

  2.   

    第一个问题你可以对selectedIndex直接进行赋值来显示你所要的值document.getElementById('tMON').options.selectedIndex=2;注意 这里的2是index 不是里边的值value options是从0开始计数往上增加的
    第二个问题没看懂 以Date类型存入数据库 如何获取??你是说存入数据库后 如何从数据库获取?那就是直接从数据库读出来就行了 用asp asp.net jsp都可以得嘛
      

  3.   

    THX
    对selectedIndex直接进行赋值来显示你所要的值,这个我了解了,现在是这样,在JSP中已获得一个DATE类型的数据u
    应该怎样对以上代码修改可以用JS外部数据u.getYear() u.getMonth() u.getDay()使下拉菜单运行后显示u这个日期呢?
    我不知道该如何调用这个外部的参数
      

  4.   

    如果已获得一个DATE类型的数据u 可以这样调用函数:
    function showDate(u){
    var year=u.getFullYear();
    var month=u.getMonth()-1;
    var day=u.getDate()-1;var $=document.getElementById;
    $("tYEAR").options.selectedIndex=2008-year;
    $("tMON").options.selectedIndex=month;
    $("tDAY").options.selectedIndex=day;}
      

  5.   

    全代码:<html>
      <head>
        <title>信息采集</title>
    <script type="text/javascript">   
    function showDate(u){
    var year=u.getFullYear();
    var month=u.getMonth()-1;
    var day=u.getDate()-1;var $=document.getElementById;
    $("tYEAR").options.selectedIndex=2008-year;
    $("tMON").options.selectedIndex=month;
    $("tDAY").options.selectedIndex=day;}

             function createSelect(ActionFlag) {   
               var selYear = document.getElementById("tYEAR");   
               var selMonth = document.getElementById("tMON");   
               var selDay = document.getElementById("tDAY");   
               var dt = new Date();                 if(ActionFlag == 1) {   
                      MaxYear = dt.getFullYear();   
                      MinYear = dt.getFullYear()-40;                 for(var i = MaxYear; i >= MinYear; i--) {   
                       var op = document.createElement("OPTION");   
                       op.value = i;   
                       op.innerHTML = i;   
                       selYear.appendChild(op);   
                     }   
                     //selYear.selectedIndex = 0;                   for(var i = 1; i   < 13; i++) {   
                          var op = document.createElement("OPTION");   
                          op.value = i;   
                          op.innerHTML = i;   
                          selMonth.appendChild(op);   
                         }   
                      //selMonth.selectedIndex = dt.getMonth();   
                     }                 var date = new Date(selYear.value, selMonth.value, 0);   
                   var daysInMonth = date.getDate();   
                    selDay.options.length = 0;                  for(var i = 1; i   <= daysInMonth ; i++) {   
                       var op = document.createElement("OPTION");   
                       op.value = i;   
                       op.innerHTML = i;   
                       selDay.appendChild(op);   
                      }   
                      //alert();   
                    //selDay.selectedIndex = dt.getDate() - 1;   
                   }   
             </script>  
      </head>
      <body>
        <center>
               <select id="tYEAR" size="1" onChange="createSelect()"> </select>  
    <select id="tMON" size="1" onChange="createSelect();"> </select>  
    <select id="tDAY" size="1" > </select>  
    <script type="text/javascript">createSelect(1); showDate(new Date(2006,03,06));</script>     </center>
      </body>
    </html>
      

  6.   

    再请教楼上,该段代码中调用showDate(); 参数new Date(2006,03,06)已为设定值,能否使函数能调用函数,例如maker.getBirthday(),然后下拉框显示该日期?
    另外,如果我要将一个下拉菜单显示的日期,以DATE类型读入数据库的话,该怎样处理?
      

  7.   

    调用showDate()只要你传入的是一个正确的日期就行了塞取得你当前选中的日期 var $=document.getElementById; var selDate=new Date($("tYEAR").options.selectedIndex,$("tMON").options.selectedIndex-1,$("tDAY").options.selectedIndex);//selDate就为当前选中的日期 用asp jsp asp.net或其他可以的方式存入数据库就行了
      

  8.   

    <script type="text/javascript">createSelect(1); showDate(u.getBirthday()); </script>用了这个语句,发觉不行~><~
    我把页面的JSP代码发你,帮我看看行不?非常感谢
      

  9.   

    屏蔽3句:
    <script type="text/javascript">  
             function createSelect(ActionFlag) {  
               var selYear = document.getElementById("tYEAR");  
               var selMonth = document.getElementById("tMON");  
               var selDay = document.getElementById("tDAY");  
               var dt = new Date();                if(ActionFlag == 1) {  
                      MaxYear = dt.getFullYear();  
                      MinYear = dt.getFullYear()-40;                for(var i = MaxYear; i >= MinYear; i--) {  
                       var op = document.createElement("OPTION");  
                       op.value = i;  
                       op.innerHTML = i;  
                       selYear.appendChild(op);  
                     }  
    //////////////////////////                 selYear.selectedIndex = 0;                  for(var i = 1; i  < 13; i++) {  
                          var op = document.createElement("OPTION");  
                          op.value = i;  
                          op.innerHTML = i;  
                          selMonth.appendChild(op);  
                         }  
    /////////////////////////////                  selMonth.selectedIndex = dt.getMonth();  
                     }                var date = new Date(selYear.value, selMonth.value, 0);  
                   var daysInMonth = date.getDate();  
                    selDay.options.length = 0;                 for(var i = 1; i  <= daysInMonth ; i++) {  
                       var op = document.createElement("OPTION");  
                       op.value = i;  
                       op.innerHTML = i;  
                       selDay.appendChild(op);  
                      }  
                      //alert();  
    /////////////////////////////////                selDay.selectedIndex = dt.getDate() - 1;  
                   }  
            </script>  
      

  10.   

    屏蔽3句:
    <script type="text/javascript">  
             function createSelect(ActionFlag) {  
               var selYear = document.getElementById("tYEAR");  
               var selMonth = document.getElementById("tMON");  
               var selDay = document.getElementById("tDAY");  
               var dt = new Date();                if(ActionFlag == 1) {  
                      MaxYear = dt.getFullYear();  
                      MinYear = dt.getFullYear()-40;                for(var i = MaxYear; i >= MinYear; i--) {  
                       var op = document.createElement("OPTION");  
                       op.value = i;  
                       op.innerHTML = i;  
                       selYear.appendChild(op);  
                     }  
    //////////////////////////                 selYear.selectedIndex = 0;                  for(var i = 1; i  < 13; i++) {  
                          var op = document.createElement("OPTION");  
                          op.value = i;  
                          op.innerHTML = i;  
                          selMonth.appendChild(op);  
                         }  
    /////////////////////////////                  selMonth.selectedIndex = dt.getMonth();  
                     }                var date = new Date(selYear.value, selMonth.value, 0);  
                   var daysInMonth = date.getDate();  
                    selDay.options.length = 0;                 for(var i = 1; i  <= daysInMonth ; i++) {  
                       var op = document.createElement("OPTION");  
                       op.value = i;  
                       op.innerHTML = i;  
                       selDay.appendChild(op);  
                      }  
                      //alert();  
    /////////////////////////////////                selDay.selectedIndex = dt.getDate() - 1;  
                   }  
            </script>  
      

  11.   

    <script type="text/javascript">createSelect(1); showDate(u.getBirthday());  </script>
    无法显示调用对象函数的日期--||| 这个尚未解决