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日全有,弄不清楚了。
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日全有,弄不清楚了。
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货