2025-05-23

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=GB18030">
        <title>Insert title here</title>
  <script type="text/javascript">
   /*
    * javascript級聯選擇日期(最常用的網站選擇日期樣式)
    * 設計和操做過程可能出現的問題:
    *    1 根據年份和月份才會生成日期的下拉列表
    *    2 每次點擊年份和月份下拉列表,日期會重復添加,所以要清空當前的日期列表
    *    3 body中的select和option標簽,如果沒有放在一行,清空日期的列表時,會把-請選擇年份-
    *    這個列表清空掉,所以要使用 dateSelect.options,隻獲取option標簽
    */
   onload = function(){
    //獲取年月份3個對象
    var yearSelect = document.getElementById("yearSelect");
    var monthSelect = document.getElementById("monthSelect");
    var dateSelect = document.getElementById("dateSelect");
   
    //生成年份和月份下拉列表
    genarateYear();
    genarateMonth();
    //generateDate();
    //alert(genarateMonth());
   
    //當年份和月份下拉列表被點擊時,生成日期
    yearSelect.onchange = generateDate;
    monthSelect.onchange = generateDate;
   
    function generateDate(){
    
     //獲取dateSelecte中的所有option,循環遍歷,刪除(解決日期重復的問題)
     //var optionArr = dateSelect.childNodes;
     var optionArr = dateSelect.options;
     for(var i = 1; i < optionArr.length; i++){
      dateSelect.removeChild(optionArr[i–]);
     }
    
     //dateSelect.options.length = 1; //也能解決日期重復的問題
     var year = yearSelect.value;
     //alert(year);
    
     // 獲取當前選中的年份和月份
     var month = monthSelect.value;
     if(year == "" || month == "")
      return;
    
     // 計算當前年當前月有多少天
     var days = 0;
     if(month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12)
      days = 31;
     else if (month == 2)
      days = (year % 4 == 0 && year % 100 != 0 ) || (year % 400 == 0) ? 29 : 28;
        else
      days = 30;
     
     // 創建option, 添加到dateSelect
        for(var i = 1; i <= days; i++){
      var option = document.createElement("option");
      option.value = i;
      option.innerHTML = i;
      dateSelect.appendChild(option);
     }
    }
   
    //生成和顯示年份的下拉列表
    function genarateYear(){
     var currentYear = new Date().getFullYear();
     for(var i = currentYear; i > currentYear – 150; i–){
      var option = document.createElement("option");
      option.value = i;
      option.innerHTML = i;
      yearSelect.appendChild(option);
     }
    
    }
   
    //生成和顯示月的你的下拉列表
    function genarateMonth(){
     for(var i = 1; i <= 12; i++){
      var option = document.createElement("option");
      option.value = i;
      option.innerHTML = i;
      monthSelect.appendChild(option);
     }
    }
   
   }
  </script>
    </head>
    <body>
     <select id="yearSelect">
      <option value="">-請選擇年份-</option>
  </select>
     <select id="monthSelect">
      <option value="">-請選擇月份-</option>
  </select>
     <select id="dateSelect">
      <option value="">-請選擇日期-</option>
  </select>
    </body>
</html>

 

摘自  代俊建的專欄 

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *