用js制作日期 2017-03-23
日期表:
<body>
<select id="year" ></select>年
<select id="month">
<option>1</option>
<option>2</option>
<option selected="selected">3</option>
<option>4</option>
此处省略5-11
<option>12</option>
</select>月
<select id="day" ></select>日
<script>
var date_time=new Date();
date_year=date_time.getFullYear(); ------获取当前年份
for (i=date_year-5;i<date_year+5;i++){ ------以当前年份为基础,向前5年向后5年
var op=document.createElement("option");
op.value=i;
op.innerText=i;
if(i==date_year){ -----默认选中当前年份,当if没有大括号时,就近原则
op.selected=true;
}
document.getElementById("year").appendChild(op);
}
function add_day(max_day) {
for(var i = 1; i < max_day; i++) {
var op = document.createElement("option");
op.innerText = i;
document.getElementById("day").appendChild(op);
}
}
document.getElementById("month").onchange=function(){ ------定义一个事件
var month_se=document.getElementById("month").selectedOptions[0].innerText;
if(month_se == 1 || month_se == 3 || month_se == 5 || month_se == 7 || month_se == 8 || month_se == 10 || month_se == 12) { -------1,3,5,7,11,为31天。
add_day(32);
}
else if(month_se == 2) -------2月分闰年和平年
{
var year_se = document.getElementById("year").selectedOptions[0].innerText;
if(year_se % 4 == 0 && year_se % 100 != 0 || year_se % 400 == 0) {
add_day(30);
}
else {
add_day(29);
}
}
else {
add_day(31);
}
}
</script>
</body>
难点:
1、年份不用<option>写,用for循环自动输入。
2、闰年时2月天数为29天;平年时为28天。