1 <body>
2 <div id="box">
3 <select name="sel1" id="sel1">
4 <option value="year">年</option>
5 </select>
6 <select name="sel2" id="sel2">
7 <option value="month">月</option>
8 </select>
9 <select name="sel3" id="sel3">
10 <option value="day">日</option>
11 </select>
12 </div>
13 <script>
14 //生成日期
15 function creatDate()
16 {
17 //生成1900年-2100年
18 for(var i = 1900; i <= 2100; i++)
19 {
20 //创建select项
21 var option = document.createElement('option');
22 option.setAttribute('value',i);
23 option.innerHTML = i;
24 sel1.appendChild(option);
25 }
26 //生成1月-12月
27 for(var i = 1; i <=12; i++){
28 var option1 = document.createElement('option');
29 option1.setAttribute('value',i);
30 option1.innerHTML = i;
31 sel2.appendChild(option1);
32 }
33 //生成1日—31日
34 for(var i = 1; i <=31; i++){
35 var option2 = document.createElement('option');
36 option2.setAttribute('value',i);
37 option2.innerHTML = i;
38 sel3.appendChild(option2);
39 }
40 }
41 creatDate();
42 //保存某年某月的天数
43 var days;
44 //年份点击 绑定函数
45 sel1.onclick = function()
46 {
47 //月份显示默认值
48 sel2.options[0].selected = true;
49 //天数显示默认值
50 sel3.options[0].selected = true;
51 }
52 //月份点击 绑定函数
53 sel2.onclick = function()
54 {
55 //天数显示默认值
56 sel3.options[0].selected = true;
57 //计算天数的显示范围
58 //如果是2月
59 if(sel2.value == 2)
60 {
61 //判断闰年
62 if((sel1.value % 4 === 0 && sel1.value % 100 !== 0) || sel1.value % 400 === 0)
63 {
64 days = 29;
65 }
66 else
67 {
68 days = 28;
69 }
70 //判断小月
71 }else if(sel2.value == 4 || sel2.value == 6 ||sel2.value == 9 ||sel2.value == 11){
72 days = 30;
73 }else{
74 days = 31;
75 }
76 //增加或删除天数
77 //如果是28天,则删除29、30、31天(即使他们不存在也不报错)
78 if(days == 28){
79 sel3.remove(31);
80 sel3.remove(30);
81 sel3.remove(29);
82 }
83 //如果是29天
84 if(days == 29){
85 sel3.remove(31);
86 sel3.remove(30);
87 //如果第29天不存在,则添加第29天
88 if(!sel3.options[29]){
89 sel3.add(new Option('29','29'),null)
90 }
91 }
92 //如果是30天
93 if(days == 30){
94 sel3.remove(31);
95 //如果第29天不存在,则添加第29天
96 if(!sel3.options[29]){
97 sel3.add(new Option('29','29'),null)
98 }
99 //如果第30天不存在,则添加第30天
100 if(!sel3.options[30]){
101 sel3.add(new Option('30','30'),null)
102 }
103 }
104 //如果是31天
105 if(days == 31){
106 //如果第29天不存在,则添加第29天
107 if(!sel3.options[29])
108 {
109 sel3.add(new Option('29','29'),null)
110 }
111 //如果第30天不存在,则添加第30天
112 if(!sel3.options[30])
113 {
114 sel3.add(new Option('30','30'),null)
115 }
116 //如果第31天不存在,则添加第31天
117 if(!sel3.options[31])
118 {
119 sel3.add(new Option('31','31'),null)
120 }
121 }
122 }
123 </script>
124 </body>