Maison  >  Article  >  interface Web  >  Native js implémente les compétences date linkage_javascript

Native js implémente les compétences date linkage_javascript

WBOY
WBOYoriginal
2016-05-16 16:20:521012parcourir

La détermination du mois implique trop de conditions de détermination. L'utilisation de if else réduira considérablement les performances. Il est recommandé d'utiliser la syntaxe switch

.

Le code est le suivant :

Copier le code Le code est le suivant :

getDays:fonction (année, mois){
// var aDay = [31,28|29,31,30,31,30,31,31,30,31,30,31];
// Journée de traitement des données en février
      var FedDays = année%4==0?29:28,
             returnDays = '';
        var mois = mois<10?mois = '0' mois:mois.toString();
changer (mois){
cas '01' :
cas '03' :
cas '05' :
cas '07' :
cas '08' :
cas '10' :
cas '12' : returnDays = 31;break;
cas '04' :
cas '06' :
cas '09' :
cas '11' : returnDays = 30;break;
cas '02' : returnDays = FedDays;break;
>
         return returnDays ;
>

Code source complet :

Copier le code Le code est le suivant :

/* auteur:laoguoyong
-----------------------------------
Lien de date à trois niveaux, sélection de plage
-----------------------------------
Paramètres
* [String] cibles : '#year,#month,#day' ; identifiant de l'année, du mois et du jour
* Plage [String] : '2013-02-03,2019-09-21' ; plage, le format correct est xxxx-xx-xx
----Pour enregistrer le code, veuillez transmettre le paramètre de plage de dates correct
----Démonstration d'erreur :
(1) la plage : '2013-02-03,2019-9-21' est incorrecte, faites attention au format de date
(2) plage : '2013-02-03' est incorrect, veuillez saisir la valeur complète de la plage
(3) la plage : '2013-02-03,2016-02-30' est fausse, février n'a pas 30 jours
(3) plage : '2013-02-03,2011-02-30' est incorrecte, la plage est fausse
*
*/
fonction GySetDate(opt){
//élément
var cibles = 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;
//Valeur de plage
var r = opt.range.indexOf(','),
aStarts = opt.range.slice(0,r).split('-'), // Convertir en : ['2013','05','20']
aEnds = opt.range.slice(r 1,opt.range.length).split('-'); // Convertir en : ['2018','08','20']
//Type de numéro
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:fonction(){
        var _that = ceci;
        // 初始化日期
        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 année = parseInt(this.value);
            changer (vrai){
                cas (année == _that.startYear):{
                    _that.setMonths({'start':_that.startMonth});
                    _that.setDays({'year':_that.startYear,'month':_that.startMonth,'start':_that.startDay});
                };pause;
                cas (année == _that.endYear):{
                    _that.setMonths({'start':1,'end':_that.endMonth});
                    si(_that.endMonth>1){
                        _that.setDays({'year':_that.endYear,'month':1,'start':1});   
                    }autre{
                        _that.setDays({'year':_that.endYear,'month':1,'start':1,'end':_that.endDay});
                    >
                };pause;
                par défaut :{
                    _that.setMonths({'start':1});
                    _that.setDays({'start':1,'year':year,'month':1});
                >
            >
           
        >
        // 月选择
        this.eMonth.onchange = function(){
            var année = parseInt(_that.eYear.options[_that.eYear.selectedIndex].value),
                mois = parseInt(this.value);
            changer (vrai){
                cas (year==_that.endYear&&month==_that.endMonth) :{
                    _that.setDays({'start':1,'year':year,'month':month,'end':_that.endDay});
                };pause;
                cas (year==_that.startYear&&month==_that.startMonth) :{
                    _that.setDays({'year':_that.startYear,'month':_that.startMonth,'start':_that.startDay});
                };pause;
                                                                                                                                                                                                                                                           par défaut :{
                        _that.setDays({'start':1,'year':year,'month':month});
                }
                                                                                                                                           >
},
/*Définir l'année, le mois, le jour
​​---------------------------------
Les valeurs des paramètres sont toutes de type Number
*/
// Paramètres {'start':xx,'end':xxx}
setYears:fonction(opt){
This.eYear.innerHTML = '';
pour(var n=opt.start;n<=opt.end;n ){
This.eYear.add(new Option(n,n));
>
},
// Paramètres {'start':xx,'end':xxx}
//Le paramètre 'end' est facultatif, s'il est ignoré, cela commencera en décembre
setMonths:fonction(opt){
This.eMonth.innerHTML = '';
var mois = opt.end || 12;
pour(var n=opt.start;n<=mois;n ){
Si(n<10) n = '0' n;
This.eMonth.add(new Option(n,n));
>
},
// Paramètres {'start':xx,'year':xxx,'month':xx,'star':xx,'end':xxx}
//Le paramètre 'fin' est facultatif, s'il est ignoré, il commencera jusqu'à la fin de ce mois (jugé en fonction du mois)
setDays:fonction(opt){
This.eDay.innerHTML = '';
        var jours = opt.end || this.getDays(opt.year,opt.month);
pour(var n=opt.start;n<=jours;n ){
Si(n<10) n = '0' n;
This.eDay.add(new Option(n,n));
         }
},
/* En fonction de l'année et du mois, renvoie le nombre correct de jours, comme 2016-2, le retour est de 29 jours (année d'exécution)
-------------------------------------------------- ------------
Les valeurs des paramètres sont toutes de type Number
*/
GetDays :fonction (année, mois){
// var aDay = [31,28|29,31,30,31,30,31,31,30,31,30,31];
// Journée de traitement des données en février
      var FedDays = année%4==0?29:28,
             returnDays = '';
        var mois = mois<10?mois = '0' mois:mois.toString();
changer (mois){
cas '01' :
cas '03' :
cas '05' :
cas '07' :
cas '08' :
cas '10' :
cas '12' : returnDays = 31;break;
cas '04' :
cas '06' :
cas '09' :
cas '11' : returnDays = 30;break;
cas '02' : returnDays = FedDays;break;
>
         return returnDays ;
},
/*Fonction auxiliaire de l'outil
​​---------------------------------
*/
GetId:fonction(id){
           return document.getElementById(id);
>
>

Affichage des effets :

L'effet n'est pas mauvais, les amis, vous pouvez l'embellir et l'utiliser dans vos propres projets.

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn