`
hrsvici412
  • 浏览: 74498 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

JavaScript实践——年月日下拉菜单

阅读更多
//年月日下拉菜单


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例子——计算"中,我们可能会看到如何利用JavaScript进行各种计算操作。博客链接指向了作者fuhao9611在iteye上的一个博客条目,尽管具体内容无法直接复制到这里,但我们可以基于常见的JavaScript...

    JavaScript凌厉开发——Ext详解与实践_源码清单

    JavaScript凌厉开发——Ext详解与实践_源码清单JavaScript凌厉开发——Ext详解与实践_源码清单JavaScript凌厉开发——Ext详解与实践_源码清单

    JavaScript凌厉开发——Ext详解与实践

    JavaScript凌厉开发——Ext详解与实践

    《javascript》——event对象与事件

    《JavaScript》——Event 对象与事件 Event 对象是 JavaScript 中的一个基本概念,它代表了用户与 Web 页面的交互行为,例如点击、鼠标移动、键盘输入等。Event 对象的属性和方法可以帮助开发者更好地处理用户的...

    javascript实战——01( 图灵系列)

    javascript实战 图灵系列 分成四个压缩包,用好压解压,这是第一个

    javascript实战——2 图灵系列

    javascript实战 图灵系列 这是第二卷

    ASP.NET源码——无限级树形菜单(Sql数据库).zip

    在这个"ASP.NET源码——无限级树形菜单(Sql数据库)"项目中,开发者构建了一个利用 ASP.NET 技术实现的无限级树形菜单,其数据存储在 SQL 数据库中。这通常是为了实现网站导航、组织结构或者分类目录等功能。 首先,...

    JavaScript网页开发——体验式学习教程.pdf

    这份"JavaScript网页开发——体验式学习教程.pdf"提供了一个深入理解JavaScript语法和实践的平台,帮助初学者和有一定基础的开发者提升技能。 教程首先会介绍JavaScript的基础知识,包括变量、数据类型(如字符串、...

    Web GIS从基础到开发实践(基于ArcGIS API FOR JavaScript)(书籍) ,刘光编著

    《Web GIS从基础到开发实践》是一本由刘光编著的专业书籍,主要围绕ArcGIS API for JavaScript这一强大的Web GIS开发工具展开。本书旨在帮助读者深入理解和熟练掌握使用JavaScript进行Web GIS应用的开发技巧。 首先...

    javaScript全面分析——中文版

    JavaScript全面分析——中文版是为想要快速理解和掌握JavaScript编程语言的学者精心编写的教程。JavaScript是一种广泛应用于Web开发的脚本语言,它在浏览器端运行,为网页添加交互性,使得用户界面更加生动活泼。本...

    JavaScript实战手册——第七版代码

    《JavaScript实战手册——第七版代码》是一本专为JavaScript开发者准备的实践指南,它涵盖了从基础到高级的各种JavaScript编程技术。这本书的代码示例旨在帮助读者深入理解语言机制,并提升在实际项目中的应用能力。...

    精通JavaScript ——动态网页(实例版)详尽实例

    本书“精通JavaScript ——动态网页(实例版)”旨在通过详尽的实例帮助读者深入理解和熟练掌握JavaScript的核心概念和应用。 首先,我们从基础开始,JavaScript是一种解释型、面向对象的弱类型脚本语言。它的灵活性...

    Ajax征服——无限级级联菜单

    在网页设计中,级联菜单(Cascading Menu)是一种常见的交互元素,它允许用户通过展开和收起子菜单来浏览层次结构的数据。无限级级联菜单则更进一步,允许菜单项无限递归,即菜单可以有任意多的层级。在本教程中,...

    初识JavaScript———(1)!!!.md

    初识JavaScript———(1)!!!.md

    JavaScript程序设计——DOM访问实验报告.docx

    实验报告的主题是“JavaScript程序设计——DOM访问”,其目的是深入理解和掌握DOM(Document Object Model)在JavaScript中的应用,包括文档对象的属性、方法以及使用方式。DOM是HTML和XML文档的标准化表示,允许...

    学习资源——JavaScript

    在标题“学习资源——JavaScript”与描述“点点滴滴,记录JavaScript的开头引用的应用”中,我们可以理解到这份文档旨在分享JavaScript的一些基本应用实例,特别是关于如何引入(import)或链接(link)外部资源。...

    计算机毕业设计HTML+CSS+JavaScript——基于HTML花店购物网站项目与实现.md

    - **项目名称**: HTML+CSS+JavaScript —— 基于HTML的花店购物网站项目与实现 - **项目目标**: 作为计算机专业学生的毕业设计或者HTML5期末考核大作业,该项目旨在帮助学生掌握基本的前端开发技能,包括HTML、CSS...

    用JavaScript写的年月日三级联动

    用标准JavaScript实现的年月日下拉列表三级联动,支持IE6、FireFox3。

    WebGIS从基础到开发实践代码(基于ArcGIS API for JavaScript)

    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...

Global site tag (gtag.js) - Google Analytics