js实现一个日期联动下拉菜单(3)
作者:Qihontin 发布时间:2007-08-04 20:49:00
接下来要对天数进行初始化了,前边有说过天数是不定的,那要如何准确求出它的天数呢?我们稍加分析就知道每个月的最后一天就是该月的天数,相当于下一个月的第一天的前一天,比如说我们要求2005年11月的天数,那我们只需要得到2005年12月一日的前一天即可得到2005年11月最后一天。可以给DateSelector添加一个方法DaysInMonth来实现该功能。
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>如何实现一个日期下拉菜单</title>
<script type="text/javascript">
function DateSelector(selYear, selMonth, selDay)
{
this.selYear = selYear;
this.selMonth = selMonth;
this.selDay = selDay;
this.InitYearSelect();
this.InitMonthSelect();
}
// 增加一个最大年份的属性
DateSelector.prototype.MinYear = 1900;
// 增加一个最大年份的属性
DateSelector.prototype.MaxYear = (new Date()).getFullYear();
// 初始化年份
DateSelector.prototype.InitYearSelect = function()
{
// 循环添加OPION元素到年份select对象中
for(var i = this.MaxYear; i >= this.MinYear; i--)
{
// 新建一个OPTION对象
var op = window.document.createElement("OPTION");
// 设置OPTION对象的值
op.value = i;
// 设置OPTION对象的内容
op.innerHTML = i;
// 添加到年份select对象
this.selYear.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.selMonth.appendChild(op);
}
}
// 根据年份与月份获取当月的天数
DateSelector.DaysInMonth = function(year, month)
{
var date = new Date(year, month, 0);
return date.getDate();
}
</script>
</head>
<body>
<select id="selYear"></select>
<select id="selMonth"></select>
<select id="selDay"></select>
<script type="text/javascript">
var selYear = window.document.getElementById("selYear");
var selMonth = window.document.getElementById("selMonth");
var selDay = window.document.getElementById("selDay");
// 新建一个DateSelector类的实例,将三个select对象传进去
new DateSelector(selYear, selMonth ,selDay);
alert("2004年2月的天数为" + DateSelector.DaysInMonth(2004, 2));
alert("2005年2月的天数为" + DateSelector.DaysInMonth(2005, 2));
</script>
</body>
</html>
很明显,这种方法根本不需要考虑到该年份是否为闰年就可以轻松求出指定月的天数。另外,有些网友可能会对“var date = new Date(year, month, 0);”这句代码觉得奇怪,传入的是2005,2,0,这看起来似乎是求二月份第一天的前一天即一月份的最后一天,为什么还会得到二月份的天数?这里必须说明一天,JavaScript的Date对象里的月份是由0开始到11结束,也就是说0表示一月,2表示三月,所以就有这种错觉,在使用JavaScript的Date对象时要特别注意这一点。


猜你喜欢
- 写在前面虽然 make 和 new 都是能够用于初始化数据结构,但是它们两者能够初始化的
- 递归和尾递归简单的说,递归就是函数自己调用自己,它做为一种算法在程序设计语言中广泛应用。其核心思想是把一个大型复杂的问题层层转化为一个与原问
- 以下插件是我在项目中经常使用的jQuery插件,不见得是最好的,但是我目前接触到的jQuery插件中最适合我的。01. jQuery.Fle
- 场景描述在update表的时候出现DeadlockLoserDataAccessException异常 (Deadlock found wh
- 数据准备student 表CREATE TABLE `student` ( `student_id` varchar(50) N
- Python中有两种循环,分别为:for循环和while循环。1. for循环for循环可以用来遍历某一对象(遍历:通俗点说,就是把这个循环
- 第一步把tensorflow保存的.ckpt模型转为pb模型, 并记下模型的输入输出名字.第二步去ncnn的github上把仓库clone下
- 一般采用的方法:self.window = Qdialog() # 实例化self.window.show() # 显示界面用这种方法只能打
- 很多时候我们的redis的IP地址一般都是默认的127.0.0.1代表只能接受本机的访问,因此我们其他机器上想要访问这个redis的时候,就
- 新特性的产生背景在了解它怎么用之前,可以先了解一下它被推出的一些背景,可以帮助你对比开发体验上的异同点,以及了解为什么会有这一章节里面的新东
- 最近在学习仿站内容,需要用到phpstudy,在下载phpstudy后想要启动MySQL服务,但是总是无法启动。主要原因是之前已经在本地安装
- 本文实例讲述了php版本CKEditor 4和CKFinder安装及配置方法。分享给大家供大家参考,具体如下:下载并解压CKEditor 4
- 可控制的滚动新闻不同于自动的滚动条,它是通过按钮控制移动的,当你把鼠标放在按钮上时,新闻内容就会向上或
- 首先,先确认一下你的字段值是不是乱码,如果是,按照以下方法:我的字段值是来自于一个geojson字符串,我在对它解析时做了如下处理:prop
- <!doctype><html><head><title>新闻图片轮换类</title
- 本文实例讲述了Python函数式编程。分享给大家供大家参考,具体如下:函数式编程就是一种抽象程度很高的编程范式,从计算机硬件->汇编语
- 阅读上一篇:FrontPage XP设计教程1——站点初建与管理接下来的工作就是读者朋友们最为关心的网页的制作和编辑了。我们知道,一个站点是
- go build 报错:main.go:5:2: cannot find package “gopkg.in/go-playground/v
- 李开复曾经在年前表示,谷歌公司会在今年春节期间,对Google谷歌的搜索结果页进行“从未有过的尝试”修改,以凸显农历春节的喜庆气氛。现在,输
- 一、简单说明80、90后的小伙伴都玩过“俄罗斯方块”,那种“叱咤风云”场景 偶尔闪现在脑海 真的是太爽了;如果没有来得及玩过的同学,这次可以