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

yizhihongxing

下面是详细讲解纯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日

相关文章

  • JavaScript解析任意形式的json树型结构展示

    为了解析任意形式的JSON树型结构,我们可以使用递归函数来实现。这里提供以下步骤: 获取JSON数据,并将其转换为JavaScript对象。 建立一个树形结构,通常使用ul和li元素,表示根节点和子节点。 创建递归函数。该函数将遍历树的节点,找到每个节点的子节点,并将它们添加到相应的父节点下。 以下是一个简单的示例: 假设我们有以下JSON数据: { &qu…

    JavaScript 2023年5月27日
    00
  • js实现简单圆盘时钟

    下面让我来详细讲解一下如何用JavaScript实现一个简单的圆盘时钟。 一、准备工作 在实现之前,首先需要准备一些基础的知识和文件: 了解HTML5、CSS3和JavaScript基础知识; 引入jQuery库,在代码中使用jQuery封装好的方法来实现; 创建一个HTML文件,命名为index.html,并在其中添加一个canvas元素,用于绘制时钟。 …

    JavaScript 2023年5月27日
    00
  • 轻量级javascript 框架Backbone使用指南

    轻量级javascript 框架Backbone使用指南 1. Backbone概述 Backbone是一个轻量级的javascript框架,可用于开发单页Web应用程序。它提供了一组处理网页数据和用户界面的关键组件,包括Models、Views、Collections和Routers。使用Backbone,开发者可以将应用程序中的业务逻辑分解为一个个可重用…

    JavaScript 2023年6月11日
    00
  • js中常见的4种创建对象方式与优缺点

    关于JavaScript中常见的四种创建对象方式和它们的优缺点的详细讲解如下: 一、对象字面量方式 使用对象字面量方式创建对象是JavaScript中最常见、最简单的方式。该方法的语法非常简洁,只需在大括号中定义对象属性和方法即可。 示例代码如下: // 创建一个对象 var obj = { name: "Lucy", age: 20, …

    JavaScript 2023年5月27日
    00
  • 实例解析Array和String方法

    实例解析Array和String方法 在 JavaScript 开发中,使用 Array 和 String 是非常常见的。为了更好的掌握这两个数据类型,了解其方法使用是非常必要的。本文将会讲解 Array 和 String 常用的方法以及使用示例。 Array方法 push 语法:arrayObject.push(newelement1,newelement…

    JavaScript 2023年6月10日
    00
  • JavaScript中的object转换函数toString()与valueOf()介绍

    介绍 JavaScript 中的 object 转换函数 toString() 与 valueOf(),可能需要先了解一下 object 和函数的基本概念。 什么是 object? 在 JavaScript 中,object 是最常用的数据类型之一,它可以被用来存储和组织数据以及代码。你可以将其想象成一个容器,容器内可以存储各种类型的数据,包括字符串、数字、…

    JavaScript 2023年6月10日
    00
  • jquery.cookie.js 操作cookie实现记住密码功能的实现代码

    想要实现记住密码功能需要首先使用jquery.cookie.js库来操作cookie,这个库可以在GitHub上下载到。 引入jquery.cookie.js 首先在head标签中引入jquery和jquery.cookie.js库。 <script src="https://cdn.staticfile.org/jquery/1.12.0/…

    JavaScript 2023年6月11日
    00
  • nodejs将JSON字符串转化为JSON对象报错的解决

    当我们在Node.js中将JSON字符串转换成JSON对象时,有时候会遇到以下报错信息:SyntaxError: Unexpected Token 或 JSON.parse: unexpected character。这些错误信息一般是由于JSON字符串格式错误或编码格式错误导致。下面,我们就来详细讲解Node.js将JSON字符串转化为JSON对象报错的解…

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