//年月日下拉菜单
function DateSelector(sYear, selMonth, selDay)
{
this.sYear = sYear;
this.sMonth = sMonth;
this.sDay = sDay;
this.sYear.Group = this;
this.sMonth.Group = this;
// 给年份、月份下拉菜单添加处理onchange事件的函数
if(window.document.all != null) // IE
{
this.sYear.attachEvent("onchange", DateSelector.Onchange);
this.sMonth.attachEvent("onchange", DateSelector.Onchange);
}
else // Firefox
{
this.sYear.addEventListener("change", DateSelector.Onchange, false);
this.sMonth.addEventListener("change", DateSelector.Onchange, false);
}
if(arguments.length == 4) // 如果传入参数个数为4,最后一个参数必须为Date对象
this.InitSelector(arguments[3].getFullYear(), arguments[3].getMonth() + 1, arguments[3].getDate());
else if(arguments.length == 6) // 如果传入参数个数为6,最后三个参数必须为初始的年月日数值
this.InitSelector(arguments[3], arguments[4], arguments[5]);
else // 默认使用当前日期
{
var dt = new Date();
this.InitSelector(dt.getFullYear(), dt.getMonth() + 1, dt.getDate());
}
}
// 增加一个最大年份的属性
DateSelector.prototype.MinYear = 1900;
// 增加一个最大年份的属性
DateSelector.prototype.MaxYear = (new Date()).getFullYear();
// 初始化年份
DateSelector.prototype.InitYearSelect = function()
{
// 循环添加OPION元素到年份select对象中
for(var i = this.MaxYear-18; i >= this.MinYear; i--)
{
// 新建一个OPTION对象
var op = window.document.createElement("OPTION");
// 设置OPTION对象的值
op.value = i;
// 设置OPTION对象的内容
op.innerHTML = i;
// 添加到年份select对象
this.sYear.appendChild(op);
}
}
// 初始化月份
DateSelector.prototype.InitMonthSelect = function()
{
// 循环添加OPION元素到月份select对象中
for(var i = 1; i < 13; i++)
{
// 新建一个OPTION对象
var op = window.document.createElement("OPTION");
// 设置OPTION对象的值
op.value = i;
// 设置OPTION对象的内容
op.innerHTML = i;
// 添加到月份select对象
this.sMonth.appendChild(op);
}
}
// 根据年份与月份获取当月的天数
DateSelector.DaysInMonth = function(year, month)
{
var date = new Date(year, month, 0);
return date.getDate();
}
// 初始化天数
DateSelector.prototype.InitDaySelect = function()
{
// 使用parseInt函数获取当前的年份和月份
var year = parseInt(this.sYear.value);
var month = parseInt(this.sMonth.value);
// 获取当月的天数
var daysInMonth = DateSelector.DaysInMonth(year, month);
// 清空原有的选项
this.sDay.options.length = 0;
// 循环添加OPION元素到天数select对象中
for(var i = 1; i <= daysInMonth ; i++)
{
// 新建一个OPTION对象
var op = window.document.createElement("OPTION");
// 设置OPTION对象的值
op.value = i;
// 设置OPTION对象的内容
op.innerHTML = i;
// 添加到天数select对象
this.sDay.appendChild(op);
}
}
// 处理年份和月份onchange事件的方法,它获取事件来源对象(即sYear或sMonth)
// 并调用它的Group对象(即DateSelector实例,请见构造函数)提供的InitDaySelect方法重新初始化天数
// 参数e为event对象
DateSelector.Onchange = function(e)
{
var selector = window.document.all != null ? e.srcElement : e.target;
selector.Group.InitDaySelect();
}
// 根据参数初始化下拉菜单选项
DateSelector.prototype.InitSelector = function(year, month, day)
{
// 由于外部是可以调用这个方法,因此我们在这里也要将sYear和sMonth的选项清空掉
// 另外因为InitDaySelect方法已经有清空天数下拉菜单,因此这里就不用重复工作了
this.sYear.options.length = 0;
this.sMonth.options.length = 0;
// 初始化年、月
this.InitYearSelect();
this.InitMonthSelect();
// 设置年、月初始值
this.sYear.selectedIndex = this.MaxYear - year;
this.sMonth.selectedIndex = month - 1;
// 初始化天数
this.InitDaySelect();
// 设置天数初始值
this.sDay.selectedIndex = day - 1;
}
分享到:
相关推荐
在这个"JavaScript例子——计算"中,我们可能会看到如何利用JavaScript进行各种计算操作。博客链接指向了作者fuhao9611在iteye上的一个博客条目,尽管具体内容无法直接复制到这里,但我们可以基于常见的JavaScript...
JavaScript凌厉开发——Ext详解与实践_源码清单JavaScript凌厉开发——Ext详解与实践_源码清单JavaScript凌厉开发——Ext详解与实践_源码清单
JavaScript凌厉开发——Ext详解与实践
《JavaScript》——Event 对象与事件 Event 对象是 JavaScript 中的一个基本概念,它代表了用户与 Web 页面的交互行为,例如点击、鼠标移动、键盘输入等。Event 对象的属性和方法可以帮助开发者更好地处理用户的...
javascript实战 图灵系列 分成四个压缩包,用好压解压,这是第一个
javascript实战 图灵系列 这是第二卷
在这个"ASP.NET源码——无限级树形菜单(Sql数据库)"项目中,开发者构建了一个利用 ASP.NET 技术实现的无限级树形菜单,其数据存储在 SQL 数据库中。这通常是为了实现网站导航、组织结构或者分类目录等功能。 首先,...
这份"JavaScript网页开发——体验式学习教程.pdf"提供了一个深入理解JavaScript语法和实践的平台,帮助初学者和有一定基础的开发者提升技能。 教程首先会介绍JavaScript的基础知识,包括变量、数据类型(如字符串、...
《Web GIS从基础到开发实践》是一本由刘光编著的专业书籍,主要围绕ArcGIS API for JavaScript这一强大的Web GIS开发工具展开。本书旨在帮助读者深入理解和熟练掌握使用JavaScript进行Web GIS应用的开发技巧。 首先...
JavaScript全面分析——中文版是为想要快速理解和掌握JavaScript编程语言的学者精心编写的教程。JavaScript是一种广泛应用于Web开发的脚本语言,它在浏览器端运行,为网页添加交互性,使得用户界面更加生动活泼。本...
《JavaScript实战手册——第七版代码》是一本专为JavaScript开发者准备的实践指南,它涵盖了从基础到高级的各种JavaScript编程技术。这本书的代码示例旨在帮助读者深入理解语言机制,并提升在实际项目中的应用能力。...
本书“精通JavaScript ——动态网页(实例版)”旨在通过详尽的实例帮助读者深入理解和熟练掌握JavaScript的核心概念和应用。 首先,我们从基础开始,JavaScript是一种解释型、面向对象的弱类型脚本语言。它的灵活性...
在网页设计中,级联菜单(Cascading Menu)是一种常见的交互元素,它允许用户通过展开和收起子菜单来浏览层次结构的数据。无限级级联菜单则更进一步,允许菜单项无限递归,即菜单可以有任意多的层级。在本教程中,...
初识JavaScript———(1)!!!.md
实验报告的主题是“JavaScript程序设计——DOM访问”,其目的是深入理解和掌握DOM(Document Object Model)在JavaScript中的应用,包括文档对象的属性、方法以及使用方式。DOM是HTML和XML文档的标准化表示,允许...
在标题“学习资源——JavaScript”与描述“点点滴滴,记录JavaScript的开头引用的应用”中,我们可以理解到这份文档旨在分享JavaScript的一些基本应用实例,特别是关于如何引入(import)或链接(link)外部资源。...
- **项目名称**: HTML+CSS+JavaScript —— 基于HTML的花店购物网站项目与实现 - **项目目标**: 作为计算机专业学生的毕业设计或者HTML5期末考核大作业,该项目旨在帮助学生掌握基本的前端开发技能,包括HTML、CSS...
用标准JavaScript实现的年月日下拉列表三级联动,支持IE6、FireFox3。
2.1ArcGIS API for JavaScript版的Hello World 2.2ArcGIS API for JavaScript与Dojo 2.2.1ArcGIS API for JavaScript的构成 2.2.2ArcGIS API for JavaScript与Dojo的关系 2.3开发与调试工具 2.3.1集成开发环境 2.3.2...