我有一个带有3个下拉框的基本表单
<form>
<select name="year" id="y">
<option value="2014">2014</option>
...
<option value="1949">1949</option>
</select>
<select name="month" id="m">
<option value="01">JAN</option>
...
<option value="12">DIC</option>
</select>
<select name="day" id="d">
<option value="1">1</option>
...
<option value="31">31</option>
</select>
<input type="text" name="age">
</form>
所以这个想法是: 获取几个月,以便可以填充天数的选择选项,1,2,3,4,5 ...等等......然后,一旦我有年,月和日,我需要进行计算所以我可以得到年龄,计算的价值/结果将转到年龄的输入框... 现在,这些年必须不少于1年,不超过69或70年,我已经做了......:
function getYears()
{
d = new Date();
curr_year = d.getFullYear();
for(i = 0; i < 70; i++)
{
document.getElementById('y').options[i] = new Option(curr_year-i,curr_year-i);
}
}
使用该代码,我可以填充年份的选项......并且使用下一个代码,我可以获得所选择的每月的天数,但是无法正常工作......
它不起作用,因为如果我选择1月它会在<select>
天显示31天,但是如果我再换一个月它会继续显示第一次选择的月数......
function obtenDias(v) {
var select = document.getElementById("d");
switch(v)
{
case "01": ed = 31;break;
case "02": ed = 29;break;
case "03": ed = 31;break;
case "04": ed = 31;break;
case "05": ed = 31;break;
case "06": ed = 31;break;
case "07": ed = 31;break;
case "08": ed = 31;break;
case "09": ed = 31;break;
case "10": ed = 31;break;
case "11": ed = 31;break;
case "12": ed = 31;break;
}
for(i=1;i<=ed;i++)
{
select.options[i] = new Option(i, i, true, false);
}
}
关于根据选择得到年龄基础的计算......好吧,我不知道......我可以得到当前日期减去选定的年份...类似的东西..它不需要100%准确......
答案 0 :(得分:1)
那是因为你没有清除旧选项。
因此,对于Jan选择,您创建了31个选项。但是对于2月选择,您正在更新29个仍然保留第30和第31选项的选项。因此,删除额外选项或在重新填充之前删除所有选项。
在重新填充选项列表数天之前尝试此操作:
while(select.options.length > 0){
selection.options.remove(0);
}