var Digital=new Date(); 
var year = document.getElementById("select1"); 
var month = document.getElementById("select2"); 
var day = document.getElementById("select3"); function my_year(yvalue){ 
  var y=new Date().getFullYear();
  for(var i=0;i<100;i++){
    year.options[i+1] = new Option(y-i,y-i);
if(yvalue==y-i){year.options[i+1].selected=true;}
  }; 
} function my_month(mvalue){
  for(var i = 0; i < 12; i++) { 
        month.options[i+1] = new Option(i+1,i+1);
if(mvalue==i+1){month.options[i+1].selected=true;}
      }   

function my_day(dvalue){ 
  day.options.length=0;
  day.options[0] = new Option('日');
  monthva=month.value;
  if(monthva==""){monthva=1;}
  switch(parseInt(monthva)){ 
  case 1:case 3:case 5:case 7:case 8:case 10:case 12: { 
  for(var i=0;i<31;i++ ) 
    day.options[i+1] = new Option(i+1,i+1);
    if(dvalue==i+1){day.options[i+1].selected=true;}  break;} 
   
  case 4:case 6:case 9:case 11:{ 
  for(var i = 0; i < 30; i++    ) 
    day.options[i+1] = new Option(i+1,i+1); 
    if(dvalue==i+1){day.options[i+1].selected=true;}  break; } 
   
  case 2:
  if((year.value%4==0&&year.value%100!=0)||year.value%400==0){ 
  for(var i=0;i<29;i++){
    day.options[i+1] = new Option(i+1,i+1);
    if(dvalue==i+1){day.options[i+1].selected=true;}
  }
  }else{
   for(var i=0;i<28;i++){
    day.options[i+1] = new Option(i+1,i+1)
    if(dvalue==i+1){day.options[i+1].selected=true;}
  }
  } 
  break; 
   
}   

function initSelectOps(yvalue,mvalue,dvalue){
my_year(yvalue); 
my_month(mvalue); 
my_day(dvalue);
}在几个加粗的地方有问题,比如说 initSelectOps(1992,1,10) 的时候,年和月都可以正式选出来,而日就说什么也选不出来,判断总是为否,在for中插入alert发现,只会出现一次alert,i的值总是直接等于最大的i+1,而不是循环多少次出现多少次alert,但是在网页中除了不能选中日期外,其他一切正常。比如说:case 1:case 3:case 5:case 7:case 8:case 10:case 12: { 
  for(var i=0;i<31;i++ )
    alert('i:'+String(i));
    day.options[i+1] = new Option(i+1,i+1);
    if(dvalue==i+1){day.options[i+1].selected=true;}
  break;} 插入了alert显示i的值,进入循环后直接弹出对话框 i:32  而0到31都失踪了,但是下拉框里从1-31日全有,弄不清楚了。