真的是好不容易才可以用这个代码了,以前怎么都获取不到select对象,都是返回null。
人都快逼疯了。
现在终于可以有点开端了。
但是啊,可以更新年,但是不能更新月和日。
如何实现啊。
我急啊,不甘心就这样放弃。
HTML完整代码:
<script language="javascript" type="text/javascript">
<!--
function G(ID){
return document.getElementById(ID);
}
window.onload=function(){
var y=G("y");
var m=G("m");
var d=G("d");
y.options.length=30;
j=-1;
for(var yi=2000;yi<=2030;yi++){
j++;
y.options[j].text=yi;
y.options[j].value=yi;
}
m.options.length=12;
for(var mi=1;mi<=12;mi++){
m.options[mi-1].text=mi;
m.options[mi-1].value=mi;
}
d.options.length=30;
for(var di=1;di<=31;di++){
d.options[di-1].text=di;
d.options[di-1].value=di;
}
}
-->
</script>
<form id="form1" name="form1" method="post" action="#">
  <label>
  <select name="y" id="y">
  </select>
  </label> 
  年
  <label>
  <select name="m" id="m">
  </select>
  </label> 
  月
  <label>
  <select name="d" id="d">
  </select>
  </label>
  日
</form>

解决方案 »

  1.   


    <script language="javascript" type="text/javascript">
    <!--
    function G(ID){
      return document.getElementById(ID);
    }
    window.onload=function(){
    var y=G("y");
    var m=G("m");
    var d=G("d");
    y.options.length=31;
    j=-1;
    for(var yi=2000;yi<=2030;yi++){
    j++;
    y.options[j].text=yi;
    y.options[j].value=yi;
    }
    m.options.length=12;
    for(var mi=1;mi<=12;mi++){
    m.options[mi-1].text=mi;
    m.options[mi-1].value=mi;
    }
    d.options.length=31;
    for(var di=1;di<=31;di++){
    d.options[di-1].text=di;
    d.options[di-1].value=di;
    }
    }
    -->
    </script>
    <form id="form1" name="form1" method="post" action="#">
      <label>
      <select name="y" id="y">
      </select>
      </label> 
      年
      <label>
      <select name="m" id="m">
      </select>
      </label> 
      月
      <label>
      <select name="d" id="d">
      </select>
      </label>
      日
    </form>
      

  2.   


    <!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="text/html; charset=gb2312" />
    <title>无标题文档</title>
    <script language="javascript">
    <!--
    //定义全局数组,记录每月天数
    var solarMonth=new Array(31,28,31,30,31,30,31,31,30,31,30,31);//定义函数,作用是取得闰年的二月天数
    function solarDays(y,m) {
       if(m==1)
          return(((y%4 == 0) && (y%100 != 0) || (y%400 == 0))? 29: 28);
       else
          return(solarMonth[m]);
    }//定义日期对象,取得年和月
    var Today = new Date();
    var tY = Today.getFullYear();
    var tM = Today.getMonth();
    var tD = Today.getDate();//显示年月的select函数
    function f_sel() {
        var i;
        var s = "";//存放准备写入html的代码字符串
        //****************开始写入年的select串
        s = s + '<label><SELECT onchange=f_show_day() name=CY>';//定义该sel表单的名字为CY
    for(i=2000;i<2101;i++) {s = s + '<option>'+i;}//写入年限,从2000年至2100年
    s = s + '</SELECT></label>年';
    //****************年的部分写完
    //****************开始写月的select串
    s = s + '<label><SELECT onchange=f_show_day() name=CM>';//定义该sel表单的名字为CM
    for(i=1;i<13;i++) {s = s + '<option>'+i;}//写入月份,从1月到12月
    s = s + '</SELECT></label>月';
    show_year_month.innerHTML = s;//将字符串s插入到页面
    }//显示日的select函数,根据年月的改变而改变日期值,例如:选2月在闰年将显示29天,非闰年将显示28天,选1月将显示31天
    function f_show_day() {
        var year = form1.CY.selectedIndex + 2000;
    var month = form1.CM.selectedIndex;
    var day = solarDays(year,month);
    var s = "";
    s = '<label><SELECT name=CD>';//可以添加某些函数来响应改变值
    for(i = 1; i <= day; i++){s = s + '<option>'+i;}
    s = s + '</SELECT></label>日';
    show_day.innerHTML = s;//将字符串s插入到页面
    }//初始化函数
    function f_show_sel() {
        f_sel();
    form1.CY.selectedIndex = tY-2000;//因为selectedIndex是从0开始的,下同
    form1.CM.selectedIndex = tM;
    f_show_day();
    form1.CD.selectedIndex = tD-1;
    }
    //-->
    </script>
    </head><body onload="f_show_sel()">
    <form id="form1" name="form1" method="post" action="#">
      <font id = "show_year_month"></font>
      <font id = "show_day"></font><input type="button" name="btn1" onclick="f_show_sel()" value="本日" />
    </form>
    </body>
    </html>
      

  3.   

    //定义全局数组,记录每月天数
    var solarMonth=new Array(31,28,31,30,31,30,31,31,30,31,30,31);//定义函数,作用是取得闰年的二月天数
    function solarDays(y,m) {
       if(m==1)
          return(((y%4 == 0) && (y%100 != 0) || (y%400 == 0))? 29: 28);
       else
          return(solarMonth[m]);
    }
    ---------------------
    惭愧啊,为什么我得到的总是undefined呢?希望再说明一下啊。给定年月得到该月份的日期数,如何实现?
      

  4.   

    调用函数solarMonth(y,m);例如:2000年2月:var day = solarMonth(2000,2);
    你是整个代码一起运行的吗?如果是的话应该不会有undefined呀