JavaScript日期选择功能示例

 更新时间:2017年01月16日 10:31:56   作者:lx_3278@126  
这篇文章主要介绍了JavaScript日期选择功能,结合实例形式分析了javascript日期与时间相关操作技巧,需要的朋友可以参考下

本文实例讲述了JavaScript日期选择功能。分享给大家供大家参考,具体如下:

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <meta charset="utf-8">
  <title>javascript日期选择</title>
  <style type="text/css">
    option{
      width:150px;
    }
  </style>
</head>
<body>
<!--<input type="hidden" value="window.location.href" />-->
<br />
<div id="dateOp">
  <select id="selectYear" onchange="getDay()"></select>年
  <select id="selectMonth" onchange="getDay()"></select>月
  <select id="selectDay"></select>日
  <input type="button" value="getdate" />
</div>
<script type="text/javascript">
  //或得当前年月日
  var date = new Date();
  var year = date.getFullYear();
  var month = date.getMonth() + 1;
  var day = date.getDate();
  var startYear = 2000;
  var endYear = 2050;
  var button = document.getElementsByTagName("input")[0];
  //得到三个select项
  var selectYearElement = document.getElementById("selectYear");
  var selectMonthElement = document.getElementById("selectMonth");
  var selectDayElement = document.getElementById("selectDay");
  //selectYearElement.onchange = getDay();
  //selectMonthElement.onchange = getDay();
  //selectYearElement.addEventListener
  getYear();
  getMonth();
  getDay();
  //年份函数
  function getYear() {
    for (var i = startYear; i <= endYear; i++) {
      var opYearElement = document.createElement("option");
      var textElement = document.createTextNode(i);
      opYearElement.appendChild(textElement);
      opYearElement.value = i;
      selectYearElement.appendChild(opYearElement);
    }
//设置默认年份的值
    selectYearElement.selectedIndex = year - startYear;
  }
  //月份函数
  function getMonth() {
    for (var i = 1; i <= 12; i++) {
      var opMonthElement = document.createElement("option");
      textMonth = document.createTextNode(i);
      opMonthElement.appendChild(textMonth);
      opMonthElement.value = i;
      selectMonthElement.appendChild(opMonthElement);
    }
//设置默认年份的值
    selectMonthElement.selectedIndex = month - 1;
  }
  //日期函数
  function getDay() {
    var getSelectedYear = selectYearElement.selectedIndex + startYear;
    var getSelectedMonth = selectMonthElement.selectedIndex + 1;
    var flag = 0;
    var selectDayElement = document.getElementById("selectDay");
    if (selectDayElement.hasChildNodes()) {
      var optionElements = selectDayElement.getElementsByTagName("option");
      for (var i = 0; i < optionElements.length; i++) {
        selectDayElement.removeChild(optionElements[0]);
//不知道为什么必须得自减一
        i--;
      }
    }
    else {
    }
//得到闰年
    if ((getSelectedYear % 4 == 0 && getSelectedYear % 100 != 0) || getSelectedYear % 400 == 0) {//得到闰年的年号
//alert("闰年");
//得到闰年大月份除二月以外
      if ((getSelectedMonth <= 7 && getSelectedMonth % 2 == 1 && getSelectedMonth != 2) || (getSelectedMonth >= 8 && getSelectedMonth % 2 == 0)) {//得到大月
        setDay(flag = 31);
      }
      else if (getSelectedMonth <= 7 && getSelectedMonth == 2) {
        setDay(flag = 29);
      }
      else if ((getSelectedMonth <= 7 && getSelectedMonth % 2 == 0 && getSelectedMonth != 2) || (getSelectedMonth >= 8 && getSelectedMonth % 2 == 1)) {//得到小月份除二月以外
        setDay(flag = 30);
      }
    }
//非闰年
    else {
//alert("平年");
//得到平年大月份除二月以外
      if ((getSelectedMonth <= 7 && getSelectedMonth % 2 == 1 && getSelectedMonth != 2) || (getSelectedMonth >= 8 && getSelectedMonth % 2 == 0)) {//得到大月
        setDay(flag = 31);
      }
      else if (getSelectedMonth <= 7 && getSelectedMonth == 2) {
        setDay(flag = 28);
      }
      else if ((getSelectedMonth <= 7 && getSelectedMonth % 2 == 0 && getSelectedMonth != 2) || (getSelectedMonth >= 8 && getSelectedMonth % 2 == 1)) {//得到小月份除二月以外
        setDay(flag = 30);
      }
    }
  }
  //设置默认年份的值
  selectDayElement.selectedIndex = day - 1;
  function setDay(dayLength) {
    for (var i = 1; i <= dayLength; i++) {
      var opDayElement = document.createElement("option");
      textMonth = document.createTextNode(i);
      opDayElement.appendChild(textMonth);
      opDayElement.value = i;
//alert(i);
      selectDayElement.appendChild(opDayElement);
    }
  }
  button.onclick = function () {
    var getSelectedYear = selectYearElement.selectedIndex + startYear;
    var getSelectedMonth = selectMonthElement.selectedIndex + 1;
    var getSelectedDay = selectDayElement.selectedIndex + 1;
    alert("当前选中的日期是:" + getSelectedYear + "年" + getSelectedMonth + "月" + getSelectedDay + "日")
  }
  //getDay
</script>
</body>
</html>

运行效果图如下:

PS:这里再为大家提供几款日期与日历相关在线工具供大家参考使用:

在线万年历日历:
http://tools.jb51.net/bianmin/wannianli

网页万年历日历:
http://tools.jb51.net/bianmin/webwannianli

在线阴历/阳历转换工具:
http://tools.jb51.net/bianmin/yinli2yangli

更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《JavaScript时间与日期操作技巧总结》、《JavaScript查找算法技巧总结》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript数学运算用法总结

希望本文所述对大家JavaScript程序设计有所帮助。

相关文章

  • js判断节假日实例代码

    js判断节假日实例代码

    因为要做一个日历控件,遇到国家法定节假日,怎么实现此功能呢?其实实现代码很简单的。下面小编给大家分享js判断节假日实例代码,需要的朋友参考下吧
    2017-12-12
  • ECMAscript新特性对象介绍

    ECMAscript新特性对象介绍

    这篇文章主要介绍了ECMAscript新特性对象,对象(object)是JavaScript最重要的数据结构。ECMAScript 2015对它进行了重大升级,下面我们来看一下它的改变

    2021-12-12
  • JS实现网络请求的三种方式梳理

    JS实现网络请求的三种方式梳理

    本文主要为大家介绍了基于 XMLHttpRequest、Promise、async/await 等三种异步网络请求的写法,文中的示例代码讲解详细,感兴趣的可以学习一下
    2022-03-03
  • TypeScript中Enum类型的具体使用

    TypeScript中Enum类型的具体使用

    在TypeScript 中,枚举或枚举类型是具有一组常量值的常量长度的数据结构,本文主要介绍了TypeScript中Enum类型的具体使用,具有一定的参考价值,感兴趣的可以了解一下
    2023-10-10
  • js实现根据身份证号自动生成出生日期

    js实现根据身份证号自动生成出生日期

    这篇文章主要介绍了js实现根据身份证号自动生成出生日期,需要的朋友可以参考下
    2015-12-12
  • JS实现数组去重,显示重复元素及个数的方法示例

    JS实现数组去重,显示重复元素及个数的方法示例

    这篇文章主要介绍了JS实现数组去重,显示重复元素及个数的方法,涉及javascript数组遍历、统计、计算等相关操作技巧,需要的朋友可以参考下
    2019-01-01
  • 全面解析Bootstrap排版使用方法(文字样式)

    全面解析Bootstrap排版使用方法(文字样式)

    这篇文章全面解析了Bootstrap排版使用方法,本文重点介绍Bootstrap排版中的文字样式设置,感兴趣的小伙伴们可以参考一下
    2015-11-11
  • web前端开发也需要日志

    web前端开发也需要日志

    web前端开发过程中调试是一个不可避免的过程,我们有众多的浏览器可供选择,但是如果您要调试的平台浏览器不是那么先进呢
    2010-12-12
  • js tab效果代码增强版

    js tab效果代码增强版

    兼容IE,firefox的js tab效果代码增强版
    2008-04-04
  • go.js的基本使用方法详解【与vue,react同理】

    go.js的基本使用方法详解【与vue,react同理】

    这篇文章主要介绍了go.js的基本使用方法,结合实例形式详细分析了go.js基本功能、原理及vue中使用方法,需要的朋友可以参考下
    2023-06-06

最新评论