老师你好,帮忙看下作业,谢谢
来源:7-9 JS对表单元素进行设置5
ByteDancer07
2020-01-24 14:37:24
index.js
function show1() {
// body...
var year = document.getElementById("year");
var month = document.getElementById("month");
var day = document.getElementById("day")
var date = new Date();
ymd(year,1999,date.getFullYear());
ymd(month,1,12);
ymd(day,1,31);
var n = year.length;
year.selectedIndex = Math.round(n/2);
}
function ymd(obj,start,end) {
// body...
for (var i =start;i<=end;i++) {
obj.options.add(new Option(i,i));
}
}
function changeYMD() {
var month = document.getElementById("month");
var day = document.getElementById("day");
var m = month.value;
if (m==4||m==6|m==9||m==11) {
day.options.remove(day.length);
}else if (m==2) {
var year = document.getElementById("year");
var y = year.value;
if((y%4==0&&y%100!=0)||(y%4==0&&y%100==0)){
for (var i = day.length-1; i>day.length-3;i--) {
day.options.remove(i)
}
}else{
for (var i = day.length-1; i>day.length-4;i--) {
day.options.remove(i)
}
}
}
}html
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>日历联动</title> <script type="text/javascript" src="testJs.js"></script> </head> <body onload="show1()"> <form> <select name="year" id="year" onchange="changeYMD()">年</select> <select name="month" id="month" onchange="changeYMD()">月</select> <select name="day" id="day" >日</select> </form> </body> </html>
2回答
同学,你好!代码还是存在几个问题的:
1、2月选择后,日期没有内容

2、选择30天的月份,日期还是31天
具体原因如下:
1、for循环中的day.length每次移除一个选项都会发生变化,所以不能这么使用,要用具体的值,比如28或者31之类的。

2、下面选中的内容有误,应该是day.length-1,因为索引从0开始

另外,2月和30天的月份移除选项后,如果再选31天的月份没有添加选项,也是不对的
所以建议参考那位同学的思路,先移除,然后根据具体月份再添加29、30、31这些天
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
好帮手慕小尤
2020-01-29
同学你好,同学只清除了日期,未进行添加,建议同学参考:https://class.imooc.com/course/qadetail/187631 进行修改。
如果我的回答解决了你的疑惑,请采纳,祝学习愉快
相似问题