m0_67871155 2023-04-18 23:15 采纳率: 100%
浏览 39
已结题

JavaScript下拉框选择日期

JS实验,HTML:在这里需要打开网页就显示当前日期,但是这个代码中不能实现这个功能,而且每个月的天数都是31天,不会随着月份和年份而改变,希望帮忙修改一下。


<body>
  <select name="" id="year">
    
  </select>
  <select name="" id="month">
    
  </select>
  <select name="" id="day">
    
  </select>
  <input type="button" onclick="getDay()" value="获取日期" />
  <input type="button" onclick="aa()" value="清空" />
  <script language="javascript">
 today=new Date() 
  //添加年份
nYear=today.getFullYear()
for(var y=nYear;y>nYear-100;y--){
    l=new Option(y,y)
    document.getElementById("year").add(l)
}
 //添加月份
tmonth=parseInt(today.getMonth());
  
 for(var i=1;i<=12;i++){
     b=new Option(i,i)
     document.getElementById("month").add(b)
 }
 document.getElementById("month").options[tmonth].selected=true;//显示当前月份
  
  
  nDay=[31,28,31,30,31,30,31,31,30,31,30,31]
      function aa(){
          document.getElementById("year").options.length=0
      }
  //添加日
 today = parseInt(today.getDay());

      for (var i = 1; i <= 31; i++) {
     {
          d = new Option(i, i);
          document.getElementById("day").add(d);
        }
      }
    document.getElementById("dat").options[nDay].selected=true;  
  //获取所选日期
  function getDay(){
    var obj=document.getElementById("year")//定位id
    var index = obj.selectedIndex; // 选中索引
    var text = obj.options[index].text; // 选中文本
    var value = obj.options[index].value; // 选中值  
    alert(value) 
  }
function aa(){
       document.getElementById("year").options.length=0//选择框清空
    
}
</script>

</body>
  • 写回答

1条回答 默认 最新

  • 「已注销」 2023-04-19 01:23
    关注
    
        <body>
            <select name="" id="year" onchange="changeYear()">
    
            </select>
            <select name="" id="month" onchange="changeMonth()">
    
            </select>
            <select name="" id="day">
    
            </select>
            <input type="button" onclick="getSelectedDate()" value="获取日期" />
            <input type="button" onclick="clearDate()" value="清空" />
            <script language="javascript">
                // 年dom对象
                let yearDomObj = document.getElementById("year");
                // 月dom对象
                let monthDomObj = document.getElementById("month");
                // 日dom对象
                let dayDomObj = document.getElementById("day");
    
                /**
                 * 设置 年下拉框
                 * @param {number} year
                 */
                function setYearOptions(year){
                    // 先清空所有option
                    yearDomObj.innerHTML = "";
                    //添加年份
                    for (let y = year; y > year - 100; y--) {
                        yearDomObj.add(new Option(y, y))
                    }
    
                    // 选中下拉框
                    yearDomObj.value = year;
                }
    
                /**
                 * 设置 月下拉框
                 * @param {number} month 月(与正常的月份数字一致)
                 */
                function setMonthOptions(month){
                    // 先清空所有option
                    monthDomObj.innerHTML = "";
                    //添加月份
                    for (let i = 1; i <= 12; i++) {
                        monthDomObj.add(new Option(i, i));
                    }
    
                    // 选中下拉框
                    monthDomObj.value = month;
                }
    
                /**
                 * 设置 日下拉框
                 * @param {number} year 年
                 * @param {number} month 月(与正常的月份数字一致)
                 * @param {number} day 日
                 */
                function setDayOptions(year, month, day){
                    year = parseInt(year);
                    month = parseInt(month);
                    day = parseInt(day);
    
                    // 月对应的天数
                    let nDay = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
                    if ((year % 4 === 0) && (year % 100 !== 0 || year % 400 === 0)) {
                        nDay[1] = 29;
                    }
    
                    // 先清空所有option
                    dayDomObj.innerHTML = "";
                    //添加日
                    for (let i = 1; i <= nDay[month - 1]; i++) {
                        dayDomObj.add(new Option(i, i));
                    }
    
                    // 选中下拉框
                    if(day <= nDay[month - 1]){
                        // 在本月天数内
                        dayDomObj.value = day;
                    }else{
                        // 不在本月天数内
                        dayDomObj.value = 1;
                    }
                }
    
                /**
                 * 初始化年月日下拉框为当前日期
                 */
                function initDate(){
                    // 当前日期
                    let today = new Date();
                    // 当前年
                    let curYear = today.getFullYear();
                    // 当前月
                    let curMonth = parseInt(today.getMonth()) + 1;
                    // 当前日
                    let curDay = parseInt(today.getDate());
                    // 初始化 年下拉框
                    setYearOptions(curYear);
                    // 初始化 月下拉框
                    setMonthOptions(curMonth);
                    // 初始化 日下拉框
                    setDayOptions(curYear, curMonth, curDay);
                };
                initDate();
    
                // 改变 年下拉框 事件
                function changeYear(){
                    let year = yearDomObj.value;
                    let month = monthDomObj.value;
                    let day = dayDomObj.value;
    
                    // 设置 日下拉框
                    setDayOptions(year, month, day);
                }
    
                // 改变 月下拉框 事件
                function changeMonth(){
                    let year = yearDomObj.value;
                    let month = monthDomObj.value;
                    let day = dayDomObj.value;
    
                    // 设置 日下拉框
                    setDayOptions(year, month, day);
                }
    
                //获取所选日期
                function getSelectedDate() {
                    let yearText = yearDomObj.value;
                    let monthText = monthDomObj.value;
                    let dayText = dayDomObj.value;
    
                    let dateText = yearText + " " + monthText + " " + dayText;
                    alert(dateText)
                }
    
                // 清空
                function clearDate() {
                    initDate();
                }
            </script>
    
        </body>
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 4月27日
  • 已采纳回答 4月19日
  • 创建了问题 4月18日

悬赏问题

  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效