Heim > Web-Frontend > js-Tutorial > Native js implementiert date linkage_javascript-Fähigkeiten

Native js implementiert date linkage_javascript-Fähigkeiten

WBOY
Freigeben: 2016-05-16 16:20:52
Original
1074 Leute haben es durchsucht

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:

Code kopieren Der Code lautet wie folgt:
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;
}

Vollständiger Quellcode:

Code kopieren Der Code lautet wie folgt:

/* Autor:laoguoyong
----------------------------------
Datum dreistufige Verknüpfung, Bereichsauswahl
----------------------------------
Parameter
* [String] targets:'#Jahr,#Monat,#Tag'; ID von Jahr, Monat und Tag
* [String] Bereich:'2013-02-03,2019-09-21'; das korrekte Format ist xxxx-xx-xx
----Um Code zu sparen, übergeben Sie bitte den korrekten Datumsbereichsparameter
----Fehlerdemonstration:
(1) Bereich:'2013-02-03,2019-9-21' ist falsch, achten Sie auf das Datumsformat
(2) Bereich:'2013-02-03' ist falsch, bitte geben Sie den vollständigen Bereichswert ein
(3) Bereich:'2013-02-03,2016-02-30' ist falsch, der Februar hat keine 30 Tage
(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(targets[0].slice(1));
This.eMonth = this.getId(targets[1].slice(1));
This.eDay = this.getId(targets[2].slice(1));
If(!this.eYear||!this.eMonth||!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 = parseInt(aEnds[2],10);

    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.

Verwandte Etiketten:
js
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage