老师代码有点麻烦 还请指点优化下
来源:7-9 JS对表单元素进行设置5
编程从入门到自闭
2020-08-08 18:36:52
老师 烦请指点下我的代码 还有没有没考虑到的场景以及如何优化 感觉这个代码思路写的很麻烦 花了很久 htm 和js代码 如下请老师运行后指正
html代码
<!DOCTYPE html>
<html>
<head>
<title>7-9 js对表单元素进行设置5</title>
<script type="text/javascript" src="7-9 js对表单元素进行设置5.js"></script>
</head>
<body onload="f1()">
<select name="yyyy" id="yyyy" onchange="change()"></select>年
<select name="mm" id="mm" onchange="change()"></select> 月
<select name="dd" id="dd"></select>日
</body>
</html>
js代码
function f1(){
var yyyy=document.getElementById('yyyy');
var mm=document.getElementById('mm');
var dd=document.getElementById('dd');
f2(yyyy,1995,2020);
f2(mm,1,12);
f2(dd,1,31);
}
//增加方法 增加到指定的位置
function f2(obj ,start,end){
for(var i=start;i<=end;i++){
obj.add(new Option(i,i));
}
}
//删除方法 最终删除到的位置 对应的数字
function del(obj ,end){
while(obj.length>end){
obj.remove(end);
}
}
function change(){
var yyyy=document.getElementById('yyyy');
var mm=document.getElementById('mm');
var dd=document.getElementById('dd');
var v= mm.value;
var y=yyyy.value;
if(v==4|v==6|v==9|v==11){
//需考虑 从大月变换到小月 和小月变换到大月 顾分两种场景
if(dd.length>30){
del(dd,30);
}else if(dd.length<30){
f2(dd,dd.length+1,30);
}
}
else if(v==2){
if((y%4==0&y%100!=0)|y%400==0){
//需考虑平年二月变换到闰年2月和 闰年2月变换到平年2月 顾需要再次分两种场景
if(dd.length>29){
del(dd,29);
}
else{
f2(dd,dd.length+1,29);
}
}else{
del(dd,28);
}
}else{
f2(dd,dd.length+1,31);
}
}
1回答
好帮手慕阿园
2020-08-08
同学你好,运行效果是正确的,实现了三级联动,也考虑到了大小月以及平闰年,很棒呐
实现效果的方式有很多种,同学按照自己的思路实现了效果就可以,继续加油
祝学习愉快
相似问题