http://expert.csdn.net/Expert/topic/1146/1146212.xml?temp=.7431147

解决方案 »

  1.   

    一个严重错误,是对select的值的引用,另一个是循环时的取值问题,另外还有一些细节(为什么不直接在28天的基础上直接增加呢)
    改正后如下:
    <script>
    function change_day(year,month,the_day)
    {
    var IsLeapYear = year%4==0&&year%100!=0||year%400==0; var days
    switch(month) { 
    case '2': 
    if (IsLeapYear) days = 29;
    else days = 28;
    break; 
    case '4': 
    case '6': 
    case '9': 
    case '11': days = 30;break; 
    default: days = 31;break;

    j=document.all(the_day).options.length; 
    for (dayX=j;dayX>27;dayX--){
    document.all(the_day).options.remove(dayX); 
    }
    for(i=28;i<=days;i++) { 
    var day=document.createElement("OPTION"); 
    document.all(the_day).options.add(day); 
    day.innerText=i; 

    } </script><p align="left">日期:<SELECT name=Year1 onchange="change_day(this.options[this.selectedIndex].value,Month1.options[Month1.selectedIndex].value,'Day1')">
                  <OPTION value=''>选择年<option value=1990>1990<OPTION 
                  value=1991>1991<OPTION value=1992>1992<OPTION 
                  value=1993>1993<OPTION value=1994>1994<OPTION 
                  value=1995>1995<OPTION value=1996>1996<OPTION 
                  value=1997>1997<OPTION value=1998>1998<OPTION 
                  value=1999>1999<OPTION value=2000>2000<OPTION 
                  value=2001>2001<OPTION value=2002>2002<OPTION 
                  value=2003>2003<OPTION value=2004>2004<OPTION 
                  value=2005>2005<OPTION value=2006>2006<OPTION 
                  value=2007>2007<OPTION value=2008>2008<OPTION 
                  value=2009>2009<OPTION value=2010>2010<OPTION 
                  value=2011>2011<OPTION value=2012>2012<OPTION 
                  value=2013>2013<OPTION value=2014>2014<OPTION 
                  value=2015>2015<OPTION value=2016>2016<OPTION 
                  value=2017>2017<OPTION value=2018>2018<OPTION 
                  value=2019>2019<OPTION value=2020>2020</OPTION></SELECT> 年 <SELECT 
                  name=Month1 onchange="change_day(Year1.options[Year1.selectedIndex].value,this.options[this.selectedIndex].value,'Day1')"><OPTION value=''>选择月<OPTION value=1>1<OPTION value=2>2<OPTION 
                  value=3>3<OPTION value=4>4<OPTION value=5>5<OPTION 
                  value=6>6<OPTION value=7>7<OPTION value=8>8<OPTION 
                  value=9>9<OPTION value=10>10<OPTION value=11>11<OPTION 
                  value=12>12</OPTION></SELECT> 月 
                 <SELECT 
                  name=Day1><OPTION value=''>选择日<OPTION value=1>1<OPTION value=2>2<OPTION 
                  value=3>3<OPTION value=4>4<OPTION value=5>5<OPTION 
                  value=6>6<OPTION value=7>7<OPTION value=8>8<OPTION 
                  value=9>9<OPTION value=10>10<OPTION value=11>11<OPTION 
                  value=12>12<OPTION value=13>13<OPTION value=14>14<OPTION value=15>15<OPTION value=16>16<OPTION value=17>17<OPTION value=18>18<OPTION value=19>19<OPTION value=20>20<OPTION value=21>21<OPTION value=22>22<OPTION value=23>23<OPTION value=24>24<OPTION value=25>25<OPTION value=26>26<OPTION value=27>27<OPTION value=28>28<OPTION value=29>29<OPTION value=30>30<OPTION value=31>31</OPTION></SELECT> 日 </p>