老师代码有点麻烦 还请指点优化下

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

同学你好,运行效果是正确的,实现了三级联动,也考虑到了大小月以及平闰年,很棒呐

实现效果的方式有很多种,同学按照自己的思路实现了效果就可以,继续加油

祝学习愉快

0

0 学习 · 9666 问题

查看课程