纯JS实现出生日期[年月日]下拉菜单效果

下面是详细讲解纯JS实现出生日期[年月日]下拉菜单效果的攻略:

1. HTML结构

首先,我们需要在HTML页面中创建一个select元素,有3个下拉菜单选项分别代表出生日期的年、月、日。

<select id="year"></select>
<select id="month"></select>
<select id="day"></select>

2. JS实现

2.1 动态生成年月日下拉菜单选项

在JS文件中,我们可以使用for循环动态生成年、月、日的下拉菜单选项。以年份为例,从当前年份倒序到1900年,生成年份选项。

var yearSelect = document.getElementById("year");
var currentYear = new Date().getFullYear();  // 获取当前年份
for (var i = currentYear; i >= 1900; i--) {
  var option = document.createElement("option");
  option.value = i;  // 设定option的value值为年份
  option.text = i;
  yearSelect.appendChild(option);  // 添加至年份下拉菜单中
}

月份和日期的下拉菜单选项同理,但需要注意2月份不同年份的天数不同,需要做出判断并动态生成。

2.2 动态更新月份和日期的下拉菜单选项

在选取年份后,需要动态更新月份和日期下拉菜单选项。当用户选取年份下拉菜单选项时,通过onchange事件监听选项的变化,调用updateMonthAndDay()函数在月份和日期下拉菜单中动态生成选项。

yearSelect.onchange = updateMonthAndDay;

function updateMonthAndDay() {
  // 更新月份下拉菜单选项
  var currentYear = yearSelect.value;
  var monthSelect = document.getElementById("month");
  monthSelect.innerHTML = "";  // 清空已有的选项
  for (var i = 1; i <= 12; i++) {
    var option = document.createElement("option");
    option.value = i;  // 设定option的value值为月份
    option.text = i;
    monthSelect.appendChild(option);
  }

  // 更新日期下拉菜单选项
  var daySelect = document.getElementById("day");
  daySelect.innerHTML = "";  // 清空已有的选项
  var daysInMonth = new Date(currentYear, monthSelect.value, 0).getDate();
  for (var i = 1; i <= daysInMonth; i++) {
    var option = document.createElement("option");
    option.value = i;  // 设定option的value值为日期
    option.text = i;
    daySelect.appendChild(option);
  }
}

同样的,当用户选取月份下拉菜单选项时,也要动态更新日期下拉菜单选项。方法与更新年份的方法大同小异。

示例1

假如我们要在一个注册界面上添加出生日期选择的功能,此时可以参考上述的实现方法。代码见下:

<div>
  <label>出生日期:</label>
  <select id="year"></select>
  <select id="month"></select>
  <select id="day"></select>
</div>
var yearSelect = document.getElementById("year");
var monthSelect = document.getElementById("month");
var daySelect = document.getElementById("day");
var currentYear = new Date().getFullYear();  // 获取当前年份

// 动态生成年份选项
for (var i = currentYear; i >= 1900; i--) {
  var option = document.createElement("option");
  option.value = i;  // 设定option的value值为年份
  option.text = i;
  yearSelect.appendChild(option);
}

// 动态生成月份选项
for (var i = 1; i <= 12; i++) {
  var option = document.createElement("option");
  option.value = i;  // 设定option的value值为月份
  option.text = i;
  monthSelect.appendChild(option);
}

// 动态生成日期选项
function updateDay() {
  daySelect.innerHTML = "";
  var year = yearSelect.value;
  var month = monthSelect.value;
  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.onchange = updateDay;
monthSelect.onchange = updateDay;

// 当页面加载完成时,动态生成初始的日期选项
updateDay();

示例2

如果我们想要添加修改用户生日的功能,需要在数据库中查询出用户的出生日期并显示在下拉菜单中。代码见下:

<div>
  <label>修改出生日期:</label>
  <select id="year"></select>
  <select id="month"></select>
  <select id="day"></select>
  <button onclick="submit()">提交</button>
</div>
var yearSelect = document.getElementById("year");
var monthSelect = document.getElementById("month");
var daySelect = document.getElementById("day");
var currentYear = new Date().getFullYear();

// 从数据库中查询出用户的出生日期并显示在下拉菜单中
var birthYear = "1998";
for (var i = currentYear; i >= 1900; i--) {
  var option = document.createElement("option");
  option.value = i;
  option.text = i;
  if (birthYear === String(i)) {
    option.selected = true;  // 设置默认选中出生年份
  }
  yearSelect.appendChild(option);
}

var birthMonth = "5";
for (var i = 1; i <= 12; i++) {
  var option = document.createElement("option");
  option.value = i;
  option.text = i;
  if (birthMonth === String(i)) {
    option.selected = true;  // 设置默认选中出生月份
  }
  monthSelect.appendChild(option);
}

var birthDay = "7";
daySelect.innerHTML = "";
var daysInMonth = new Date(birthYear, birthMonth, 0).getDate();
for (var i = 1; i <= daysInMonth; i++) {
  var option = document.createElement("option");
  option.value = i;
  option.text = i;
  if (birthDay === String(i)) {
    option.selected = true;  // 设置默认选中出生日期
  }
  daySelect.appendChild(option);
}

// 提交用户修改的出生日期
function submit() {
  var newBirthYear = yearSelect.value;
  var newBirthMonth = monthSelect.value;
  var newBirthDay = daySelect.value;

  // 提交修改到数据库等后端处理
}

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:纯JS实现出生日期[年月日]下拉菜单效果 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • php中preg_replace正则替换用法分析【一次替换多个值】

    《PHP中preg_replace正则替换用法分析【一次替换多个值】》是一篇介绍PHP中正则替换的文章,主要介绍preg_replace函数中的一些使用技巧,可以一次替换多个值。 一、preg_replace函数 preg_replace是PHP中用于正则替换的函数。它的语法如下: preg_replace($pattern, $replacement, $…

    JavaScript 2023年6月10日
    00
  • js设置document.domain实现跨域的注意点分析

    关于“js设置document.domain实现跨域的注意点分析”的攻略,我将详细介绍如下: 什么是跨域? 在 Web 开发中,跨域是指在一个域下的文档或脚本试图去请求另一个域下的资源。简单来说,当浏览器向一个网站的服务器发送请求时,如果该请求要访问另外一个域名下的资源(比如 JavaScript 文件、CSS 文件等),那么就会发生跨域问题。 为什么需要跨…

    JavaScript 2023年6月10日
    00
  • Javascript 遍历对象中的子对象

    Javascript 遍历对象中的子对象通常使用递归的方式实现,具体步骤如下: 1. 判断对象是否为字典 使用 typeof 运算符判断对象类型是否为 object,进一步判断该对象是否为字典(即 {} 类型),如果不是,则直接输出当前对象: function traverseObject(obj, indentation) { if (typeof obj…

    JavaScript 2023年5月27日
    00
  • JavaScript自定义事件介绍

    以下是JavaScript自定义事件的详细介绍: 什么是JavaScript自定义事件? 在JavaScript中,自定义事件是指可以自定义触发和监听的事件,以便根据需要执行某些操作。 如何定义自定义事件? 我们可以使用原生JavaScript或者第三方库(例如jQuery)来定义自定义事件。以下是几种定义自定义事件的方式: 1. 使用Event对象 con…

    JavaScript 2023年6月10日
    00
  • javascript常用方法总结

    作为网站作者,我可以为您提供“Javascript常用方法总结”的完整攻略。 1. 简介 Javascript是一种广泛应用于web开发的编程语言,它具有很多强大的方法,可以对页面上的元素进行操作、获取信息、修改样式等等。在本篇攻略中,我将为大家梳理一些常用的javascript方法及其使用方法,希望能对前端开发的同学有所帮助。 2. 常用方法 2.1. g…

    JavaScript 2023年5月17日
    00
  • JS如何对Iframe内外页面进行操作总结

    下面是JS如何对Iframe内外页面进行操作总结的完整攻略: 1. 通过window.parent获取父级页面对象并进行操作 window.parent用于获取当前iframe的父级页面对象,通过它可以调用父级页面的函数或属性进行操作。以下是一个示例进行说明: <!– 父级页面index.html –> <!DOCTYPE html&g…

    JavaScript 2023年6月11日
    00
  • 原生JS实现动态加载js文件并在加载成功后执行回调函数的方法

    实现动态加载 js 文件是网页开发中常见的需求,可以用于按需加载某些功能模块,减轻网页初始加载时的压力。同时,当加载完成时,需要执行相应的回调函数,以便进行后续的操作。下面是实现原生 JavaScript 实现动态加载 js 文件并执行回调函数的完整攻略: 1. 原生JS实现动态加载js文件 我们可以通过创建一个 script 标签来实现动态加载 js 文件…

    JavaScript 2023年5月27日
    00
  • Jquery方式获取iframe页面中的 Dom元素

    获取 IFRAME 页面中的 DOM 元素,可以通过两种方式实现:直接获取子页面中的元素对象或通过 iframe 的 contentWindow 属性获取子页面的 window 对象,从而操作其中的 DOM 元素。以下是使用 jQuery 的方式获取 IFRAME 页面中 DOM 元素的攻略。 使用 jQuery 的方式获取 IFRAME 页面中的 DOM …

    JavaScript 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部