javascript------一个类的年,月,日联动菜单

来源:互联网 发布:邮箱域名注册 编辑:程序博客网 时间:2024/05/17 09:43

<script>
function Calendar(startyear,endyear){
this.year = new Array()
var j=0
for(var i = startyear;i<=endyear;i++)
{
this.year[j]=i;
j
++}
this.month=[1,2,3,4,5,6,7,8,9,10,11,12]
this.day=[[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31],[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28],[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31],[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30],[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31],[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30],[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31],[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31],[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30],[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31],[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30],[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31]]
}
Calendar.prototype.Createselect
=function(){
var sele1 = document.createElement("select")
sele1.id
="year"
document.body.appendChild(sele1)
var sele2 = document.createElement("select")
sele2.id
="month"
document.body.appendChild(sele2)
var sele3 = document.createElement("select")
sele3.id
="day"
document.body.appendChild(sele3)
this.Isyear(this.year[0])
this.Initialization()
this.addmonth()
this.addyear()
}
Calendar.prototype.Initialization
=function(){
for(var i= 0;i<this.year.length;i++)
{document.getElementById(
"year").options.add(new Option(this.year[i],i))}
for(var i= 0;i<this.month.length;i++)
{document.getElementById(
"month").options.add(new Option(this.month[i],i))}
for(var i= 0;i<this.day[0].length;i++)
{document.getElementById(
"day").options.add(new Option(this.day[0][i],i))}
}
Calendar.prototype.Isyear
= function(year){
if (0==year%4&&((year%100!=0)||(year%400==0)))
{
this.day[1]=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29]}
else
{
this.day[1]=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28]}
}
Calendar.prototype.addyear
= function(){
var obj = document.getElementById("year")
var me=this;
obj.attachEvent(
"onchange",function(){me.changeyear();})
}
Calendar.prototype.changeyear
= function(e){  
e
=e||event
 
this.Isyear(this.year[event.srcElement.value])
  document.getElementById(
"day").length=0
 
if(document.getElementById("day").length<30)
 
for(var i= 0;i<this.day[1].length;i++)
{document.getElementById(
"day").options.add(new Option(this.day[1][i],i))}
}
Calendar.prototype.addmonth
= function(year){       
var obj = document.getElementById("month")
var me=this;
obj.attachEvent(
"onchange",function(){me.changemonth();})
}
Calendar.prototype.changemonth
= function(e){   
e
=e||event
document.getElementById(
"day").length=0
var nowday = this.day[e.srcElement.value]
for(var i=0;i<nowday.length;i++)
document.getElementById(
"day").options.add(new Option(nowday[i],i))
}
window.onload
=function(){
var c = new Calendar(2000,2009)
c.Createselect()
}
</script>

刚开始写的时候出现了点问题,以前写类时创建的函数都是直接写方法的。

现在用的是attchEvent的方法  结果就出错了,生成的函数使用上是有规则的

暂时不是很懂为什么这样写,唉,写多了应该会慢慢明白的吧

原创粉丝点击