JS实现年月日下拉框的联动

第一次写博客,刚学JS部分2天,新手写个年月日的下拉框。欢迎指正!

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>年月日</title>

</head>

<body><select onchange="setday()" id="year"></select><select id="month" onchange="setday()"></select><select id="day" onchange="setday()"></select>
</body>
<script type="text/javascript">
 //把年份加载进去
   var year = document.getElementById("year");
   for(var i = 1900 ; i <=2016 ; i ++){
       var options = document.createElement("option");
       options.innerHTML = i;
       year.appendChild(options);  
    }
</script>          

<script type="text/javascript">     
    //把月份加载进去
   var month = document.getElementById("month");
   for(var i = 1 ; i <=12 ; i ++){
       var options = document.createElement("option");
       options.innerHTML = i;
       month.appendChild(options);         
    }       
</script>

<script type="text/javascript">     
    //把天数加载进去
   var day = document.getElementById("day");
   for(var i = 1 ; i <=31 ; i ++){
       var options = document.createElement("option");
       options.innerHTML = i;
       day.appendChild(options);           
    }       
</script>



<script type="text/javascript">

    //根据年份,判断该月的具体天数,分为闰年
     function setday(){
       var specialyear ; //闰年的容器

        var year = document.getElementById("year");
        var yearIndex = year.selectedIndex;//获取选择年份的位置
        var yearSelect = year.options[yearIndex].text;//获取具体的年份
        if((yearSelect%4==0 && yearSelect%100!=0) || yearSelect%400==0)
             specialyear=yearSelect;//记下闰年   
            // alert(specialyear);

     //获取选择的月份
     var month = document.getElementById("month");
     var monthIndex = month.selectedIndex;
     var monthSelect = month.options[monthIndex].text;  
    // alert(monthSelect);         

    //加载天数  
       var day = document.getElementById("day");
       day.options.length=0;
       //alert(monthSelect);
       if(monthSelect=='1'||monthSelect=='3'||monthSelect=='5'||monthSelect=='7'||monthSelect=='8'||monthSelect=='10'||monthSelect=='12'){//这里数字要加引号
       for(var i = 1 ; i <=31 ; i ++){
       var options = document.createElement("option");
       options.innerHTML = i ;
       day.appendChild(options); 
           }        
           }
        // alert("day22");   
       if(monthSelect=='2'||monthSelect=='4'||monthSelect=='6'||monthSelect=='9'&&monthSelect=='11'){
         if(yearSelect==specialyear && monthSelect=='2') {
         for(var i = 1 ; i <=28 ; i ++){
        var options = document.createElement("option");
        options.innerHTML = i ;
        day.appendChild(options);    
         }
             } else{
        for(var i = 1 ; i <=30 ; i ++){
        var options = document.createElement("option");
        options.innerHTML = i ;
        day.appendChild(options); 
             }               
                 }             
    }
     }
</script>
</html>

得到的结果如下:
这里写图片描述

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
<HTML> <HEAD> <title>年月日联动下拉框</title> <meta http-equiv='Content-Type' content='text/html; charset=gb2312'> <meta name='author' content='http://singlepine.cnblogs.com/'> </HEAD> <body> <form name="form1"> 请选择 年 选择 月 选择 日 </form> [removed]<!-- function YYYYMMDDstart() { MonHead = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; //先给年下拉框赋内容 var y = new Date().getFullYear(); for (var i = (y-30); i < (y+30); i++) //以今年为准,前30年,后30年 document.form1.YYYY.options.add(new Option(" "+ i +" 年", i)); //赋月份的下拉框 for (var i = 1; i < 13; i++) document.form1.MM.options.add(new Option(" " + i + " 月", i)); document.form1.YYYY.value = y; document.form1.MM.value = new Date().getMonth() + 1; var n = MonHead[new Date().getMonth()]; if (new Date().getMonth() ==1 && IsPinYear(YYYYvalue)) n++; writeDay(n); //赋日期下拉框 document.form1.DD.value = new Date().getDate(); } if(document.attachEvent) window.attachEvent("onload", YYYYMMDDstart); else window.addEventListener('load', YYYYMMDDstart, false); function YYYYDD(str) //年发生变化时日期发生变化(主要是判断闰平年) { var MMvalue = document.form1.MM.options[document.form1.MM.selectedIndex].value; if (MMvalue == ""){ var e = document.form1.DD; optionsClear(e); return;} var n = MonHead[MMvalue - 1]; if (MMvalue ==2 && IsPinYear(str)) n++; writeDay(n) } function MMDD(str) //月发生变化时日期联动 { var YYYYvalue = document.form1.YYYY.options[document.form1.YYYY.selectedIndex].value; if (YYYYvalue == ""){ var e = document.form1.DD; optionsClear(e); return;} var n = MonHead[str - 1]; if (str ==2 && IsPinYear(YYYYvalue)) n++; writeDay(n) } function writeDay(n) //据条件写日期的下拉框 { var e = document.form1.DD; optionsClear(e); for (var i=1; i<(n+1); i++) e.options.add(new Option(" "+ i + " 日", i)); } function IsPinYear(year)//判断是否闰平年 { return(0 == year%4 && (year0 !=0 || year@0 == 0)); } function optionsClear(e) { e.options.length = 1; } //--> [removed] </body> </HTML>
要在HTML和JavaScript中实现下拉框选择日期,可以采用以下方法: HTML代码: ``` <select id="year"></select> <select id="month"></select> <select id="day"></select> ``` JavaScript代码: ``` // 获取年份的下拉框 var yearSelect = document.getElementById("year"); // 获取月份的下拉框 var monthSelect = document.getElementById("month"); // 获取日期的下拉框 var daySelect = document.getElementById("day"); // 添加年份选项 for (var i = 1900; i <= 2100; i++) { var option = document.createElement("option"); option.value = i; option.text = i; yearSelect.appendChild(option); } // 添加月份选项 for (var i = 1; i <= 12; i++) { var option = document.createElement("option"); option.value = i; option.text = i; monthSelect.appendChild(option); } // 添加日期选项 function updateDays() { var year = yearSelect.value; var month = monthSelect.value; // 清空之前的选项 daySelect.innerHTML = ""; // 计算当月有多少天 var daysInMonth = new Date(year, month, 0).getDate(); // 添加日期选项 for (var i = 1; i <= daysInMonth; i++) { var option = document.createElement("option"); option.value = i; option.text = i; daySelect.appendChild(option); } } // 添加年份和月份的事件监听器 yearSelect.addEventListener("change", updateDays); monthSelect.addEventListener("change", updateDays); // 初始化日期选项 updateDays(); ``` 这段代码会生成三个下拉框,分别对应年、月、日。年份的选项从1900年到2100年,月份的选项从1到12,日期的选项则根据年份和月份动态生成。当用户选择年份或月份时,JavaScript代码会重新计算当月有多少天,并更新日期选项。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值