Das Monatsurteil beinhaltet zu viele Urteilsbedingungen, wenn sonst die Leistung erheblich verringert wird. Es wird empfohlen, die Switch -Syntax zu verwenden
Der Code ist wie folgt:
Die Codekopie lautet wie folgt:
Getdays: Funktion (Jahr, Monat) {
// var aday = [31,28 | 29,31,30,31,30,31,31,31,30,30,31];
// Datenverarbeitung am Tag im Februar
var Feddays = Jahr%4 == 0? 29: 28,
returndays = '';
var Monat = Monat <10? Monat = '0'+Monat: Monat.ToString ();
Switch (Monat) {
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ückkehrtage;
}
Komplette Quellcode:
Die Codekopie lautet wie folgt:
/* Autor: Laoguoyong
-----------------------------------
Drei-Level-Verknüpfung der Daten, Reichweite Auswahl
-----------------------------------
Parameter
* [String] Ziele: '#Jahr,#Monat,#Day'; ID des Jahres, Monat, Tag
* [String] Range: '2013-02-03.2019-09-21'; Bereich, das richtige Format ist xxxx-xx-xx
--- Um Code zu sparen, geben Sie bitte den richtigen Datumsbereichsparameter übergeben
---- Fehlerdemonstration:
(1) Bereich: '2013-02-03.2019-9-21' ist falsch, achten Sie auf das Datumsformat
(2) Bereich: '2013-02-03' ist falsch. Geben Sie bitte den gesamten Bereichswert ein
(3) Bereich: '2013-02-03.2016-02-30' Es ist falsch, es gibt keine 30 Tage im Februar
(3) Bereich: '2013-02-03.2011-02-30' ist falsch, der Bereich ist falsch
*
*/
Funktion gysetdate (opt) {
// Elem
var targets = opt.targets.Split (',');
this.eyear = this.getId (Ziele [0] .Slice (1));
this.emonth = this.getId (Ziele [1] .Slice (1));
this.eday = this.getId (Ziele [2] .Slice (1));
if (! this.eyear ||! this.monaTh ||! this.eday) return;
// Bereichswert
var r = opt.range.indexof (','),
Astarts = opt.Range.slice (0, r) .Split ('-'), // konvertieren in: ['2013', '05', '20']
Aends = opt.Range.slice (r+1, opt.Range.length) .Split ('-'); // konvertieren in: ['2018', '08', '20']
// Zahlentyp
this.startyear = parseInt (astarts [0], 10);
this.Startmonth = parseInt (astarts [1], 10);
this.startday = parseInt (astarts [2], 10);
this.endyear = parseInt (aends [0], 10);
this.endmonth = parseInt (Aends [1], 10);
this.endday = parsesint (aends [2], 10);
this.init ();
}
Gysetdate.prototype = {
init: function () {
var _that = this;
// Initialisierungsdatum
this.setyears ({'start': this.startyear, 'end': this.endyear});
this.SetMonths ({'start': this.startmonth});
this.setdays ({'Jahr': this.startyear, 'monat': this.Startmonth, 'start': this.startday});
// Jahrauswahl
this.eyear.onchange = function () {
var Jahr = parseInt (this.Value);
Switch (true) {
case (Jahr == _that.Startyear): {{
_that.setmonths ({'start': _ that.Startmonth});
_that.setdays ({'Jahr': _ that.Startyear, 'Monat': _ that.StARTMONTH, 'START': _ that.startday});
};brechen;
case (Jahr == _that.endyear): {
_that.setmonths ({'start': 1, 'end': _ that.endmonth});
if (_that.endmonth> 1) {
_that.setdays ({'Jahr': _ that.endyear, 'Monat': 1, 'start': 1});
}anders{
_that.setdays ({'Jahr': _ that.endyear, 'Monat': 1, 'start': 1, 'end': _ that.endday});
}
};brechen;
Standard:{
_that.Setmonths ({'start': 1});
_that.setdays ({'start': 1, 'Jahr': Jahr, 'Monat': 1});
}
}
}
// monatliche Auswahl
this.emonth.onchange = function () {
var Jahr = parseInt (_that.eyear.options [_that.eyear.selectedIndex] .Value),
Monat = ParseInt (this.Value);
Switch (true) {
case (Jahr == _ that.endyear && monat == _ that.endmonth): {{
_that.setdays ({'start': 1, 'Jahr': Jahr, 'Monat': Monat, 'Ende': _ that.endday});
};brechen;
case (Jahr == _ that.Startyear && monat == _ that.Startmonth): {{
_that.setdays ({'Jahr': _ that.Startyear, 'Monat': _ that.StARTMONTH, 'START': _ that.startday});
};brechen;
Standard:{
_that.setdays ({'start': 1, 'Jahr': Jahr, 'Monat': Monat});
}
}
}
},
/*Jahr, Monat, Tag festlegen
---------------------------------------
Alle Parameterwerte sind vom Typ Zahlentyp
*/
// Parameter {'start': xx, 'end': xxx}
setyears: function (opt) {
this.eyear.innerhtml = '';
für (var n = opt.start; n <= opt.end; n ++) {
this.eyear.add (neue Option (n, n));
}
},
// Parameter {'start': xx, 'end': xxx}
// Der Parameter 'Ende' ist optional, ignorieren Sie ihn und beginnt bis Dezember
setmonths: function (opt) {
this.emonth.innerhtml = '';
var Monate = opt.end || 12;
für (var n = opt.Start; n <= Monate; n ++) {
if (n <10) n = '0'+n;
this.emonth.add (neue Option (n, n));
}
},
// Parameter {'start': xx, 'Jahr': xxx, 'Monat': xx, 'stern': xx, 'end': xxx}
// Der Parameter 'Ende' ist optional, ignorieren Sie ihn und er beginnt bis Ende dieses Monats (gemessen anhand des Monats)
setdays: function (opt) {
this.eday.innerhtml = '';
var tays = opt.end || Diese.
für (var n = opt.start; n <= dage; n ++) {
if (n <10) n = '0'+n;
this.eday.add (neue Option (n, n));
}
},
/* Nach Jahr und Monat gibt es die korrekte Anzahl von Tagen zurück, z. B. 2016-2, die Rückkehr beträgt 29 Tage (Laufjahr).
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Alle Parameterwerte sind vom Typ Zahlentyp
*/
Getdays: Funktion (Jahr, Monat) {
// var aday = [31,28 | 29,31,30,31,30,31,31,31,30,30,31];
// Datenverarbeitung am Tag im Februar
var Feddays = Jahr%4 == 0? 29: 28,
returndays = '';
var Monat = Monat <10? Monat = '0'+Monat: Monat.ToString ();
Switch (Monat) {
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ückkehrtage;
},
/* Tool -Helferfunktion
---------------------------------------
*/
getId: function (id) {
return document.getElementById (id);
}
}
Effektanzeigebild:
Der Effekt ist ziemlich gut. Freunde, bitte verschönern Sie es selbst und verwenden Sie es in Ihrem eigenen Projekt.