Calendar.prototype.addmonth = function(year){ //给month的select添加事件
var obj = document.getElementById("month")
//obj.attachEvent("onchange",this.changemonth)
//=======================>
var me=this;
obj.attachEvent("onchange",function(){me.changemonth();})
}Calendar.prototype.changemonth = function(){
document.getElementById("day").length=0
var nowday = this.day[event.srcElement.value]
//为什么是null呢,因为此时this==window对象了 ,你的事件添加方法有问题,原型addmonth如上
alert(this.day[1])
}
var obj = document.getElementById("month")
//obj.attachEvent("onchange",this.changemonth)
//=======================>
var me=this;
obj.attachEvent("onchange",function(){me.changemonth();})
}Calendar.prototype.changemonth = function(){
document.getElementById("day").length=0
var nowday = this.day[event.srcElement.value]
//为什么是null呢,因为此时this==window对象了 ,你的事件添加方法有问题,原型addmonth如上
alert(this.day[1])
}
解决方案 »
- 批处理或js实现读取txt中的某一行,并输出
- 请问:这段正则表达式/^[+|-]?[1-9](\d+)?|0(\.\d+)?$/ 是什么意思?
- 求教,淘宝data-spm展开响应
- 【瓜】关于js
- 怎样得到鼠标所点当前table里的具体行和列的值?
- 请大家帮我看看这个下拉菜单怎么用
- 能不能帮下在分析一下,为什么下边的程序不能打开网上下载的图片和winnt自带的图片?.jpg/.gif?如:cloud.gif
- 如何实现:打开一个新窗口,代替登陆窗口,并去掉菜单栏和工具栏?
- 如何向父窗体传值?
- HTML DOM childNodes的疑问
- csdn论坛头像上面的特效是怎么做的
- 新手问题:在<script src="*.js">这样定义后该如何使用js里面的方法
//document.getElementById("day").length=0
var nowday = this.day[event.srcElement.value]
alert(this.day[0]) // 这里alert出来的是 还是null?
}
这样改动后可以,或者用prototype提供的bind方法Calendar.prototype.addmonth = function(year){ //给month的select添加事件
var obj = document.getElementById("month"), oThis = this;
obj.attachEvent("onchange", function(){oThis.changemonth.call(oThis)})
function Calendar(startyear,endyear){
this.year = new Array()
for(var j=0;startyear<=endyear;startyear++,j++){
this.year[j]=startyear;
}
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]
]
}
//创建3个select
Calendar.prototype.Createselect=function(){
var sele1 =documnet.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.Initialization()
this.addmonth()
}
//给个select赋值
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[1].length;i++)
{document.getElementById("day").options.add(new Option(this.day[1][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]}
}
//给month的select添加事件
Calendar.prototype.addmonth = function(year){
var obj = document.getElementById("month")
var me=this;
obj.attachEvent("onchange",function(){me.changemonth();})
}
//month的select事件
Calendar.prototype.changemonth = function(){
this.Isyear(this.year[document.getElementById("year").value])
document.getElementById("day").length=0
var nowday = this.day[event.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>
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(2007,2009)
c.Createselect()
}</script>