老师你好,帮忙看下作业,谢谢

来源: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回答

好帮手慕珊

2020-01-31

同学,你好!代码还是存在几个问题的:

1、2月选择后,日期没有内容

http://img.mukewang.com/climg/5e338d5b095befed03720112.jpg

2、选择30天的月份,日期还是31天

具体原因如下:

1、for循环中的day.length每次移除一个选项都会发生变化,所以不能这么使用,要用具体的值,比如28或者31之类的。

http://img.mukewang.com/climg/5e3393c209c00deb12160504.jpg

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

http://img.mukewang.com/climg/5e33930009d750e908740124.jpg

另外,2月和30天的月份移除选项后,如果再选31天的月份没有添加选项,也是不对的

所以建议参考那位同学的思路,先移除,然后根据具体月份再添加29、30、31这些天

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!



0

好帮手慕小尤

2020-01-29

同学你好,同学只清除了日期,未进行添加,建议同学参考:https://class.imooc.com/course/qadetail/187631 进行修改。

如果我的回答解决了你的疑惑,请采纳,祝学习愉快

0
hyteDancer07
h 那位同学初始值是28,我的是31
h020-01-29
共2条回复

0 学习 · 9666 问题

查看课程