Die Monatsbestimmung erfordert zu viele Bestimmungsbedingungen. Die Verwendung von if else führt zu erheblichen Leistungseinbußen. Es wird empfohlen, die Switch-Syntax zu verwenden
Der Code lautet wie folgt:
this.init();
}
GySetDate.prototype = {
init:function(){
var _that = this;
// 初始化日期
this.setYears({'start':this.startYear,'end':this.endYear});
this.setMonths({'start':this.startMonth});
this.setDays({'year':this.startYear,'month':this.startMonth,'start':this.startDay});
// 年选择
this.eYear.onchange = function(){
var year = parseInt(this.value);
switch(true){
case (year == _that.startYear):{
_that.setMonths({'start':_that.startMonth});
_that.setDays({'year':_that.startYear,'month':_that.startMonth,'start':_that.startDay});
};pause;
case (year == _that.endYear):{
_that.setMonths({'start':1,'end':_that.endMonth});
if(_that.endMonth>1){
_that.setDays({'year':_that.endYear,'month':1,'start':1});
}else{
_that.setDays({'year':_that.endYear,'month':1,'start':1,'end':_that.endDay});
}
};pause;
Standard:{
_that.setMonths({'start':1});
_that.setDays({'start':1,'year':year,'month':1});
}
}
}
// 月选择
this.eMonth.onchange = function(){
var year = parseInt(_that.eYear.options[_that.eYear.selectedIndex].value),
Monat = parseInt(this.value);
switch(true){
case (year==_that.endYear&&month==_that.endMonth):{
_that.setDays({'start':1,'year':year,'month':month,'end':_that.endDay});
};break;
case (year==_that.startYear&&month==_that.startMonth):{
_that.setDays({'year':_that.startYear,'month':_that.startMonth,'start':_that.startDay});
};pause;
Standard:{
_that.setDays({'start':1,'year':year,'month':month});
}
}
},
/*Jahr, Monat, Tag einstellen
---------------------------------
Die Parameterwerte sind alle vom Typ Number
*/
// Parameter {'start':xx,'end':xxx}
setYears:function(opt){
This.eYear.innerHTML = '';
for(var n=opt.start;n<=opt.end;n ){
This.eYear.add(new Option(n,n));
}
},
// Parameter {'start':xx,'end':xxx}
//Der Parameter 'end' ist optional, wenn er ignoriert wird, beginnt er im Dezember
setMonths:function(opt){
This.eMonth.innerHTML = '';
var Monate = opt.end ||. 12;
for(var n=opt.start;n<=months;n ){
If(n<10) n = '0' n;
This.eMonth.add(new Option(n,n));
}
},
// Parameter {'start':xx,'year':xxx,'month':xx,'star':xx,'end':xxx}
//Der Parameter „end“ ist optional. Wenn er ignoriert wird, beginnt er am Ende dieses Monats (beurteilt anhand des Monats)
setDays:function(opt){
This.eDay.innerHTML = '';
var days = opt.end ||. this.getDays(opt.year,opt.month);
for(var n=opt.start;n<=days;n ){
If(n<10) n = '0' n;
This.eDay.add(new Option(n,n));
}
},
/* Geben Sie basierend auf Jahr und Monat die richtige Anzahl von Tagen zurück, z. B. 2016-2, die Rückgabe beträgt 29 Tage (Laufjahr)
-------------------------------------------------- ------------
Die Parameterwerte sind alle vom Typ Number
*/
GetDays:function(year,month){
// var aDay = [31,28|29,31,30,31,30,31,31,30,31,30,31];
// Tagesdatenverarbeitung im Februar
var FedDays = Jahr%4==0?29:28,
returnDays = '';
var Monat = Monat<10?Monat = '0' Monat:Monat.toString();
switch(month){
Fall '01':
Fall '03':
Fall '05':
Fall '07':
Fall '08':
Fall '10':
Fall '12': returnDays = 31;break;
Fall '04':
Fall '06':
Fall '09':
Fall '11': returnDays = 30;break;
Fall '02': returnDays = FedDays;break;
}
Rückgabe Rückgabetage;
},
/*Werkzeughilfsfunktion
---------------------------------
*/
GetId:function(id){
return document.getElementById(id);
}
}
Effektanzeige:
Der Effekt ist nicht schlecht, Freunde, Sie können ihn verschönern und in Ihren eigenen Projekten verwenden.