Maison > interface Web > js tutoriel > le corps du texte

Native js implémente les compétences date linkage_javascript

WBOY
Libérer: 2016-05-16 16:20:52
original
1024 Les gens l'ont consulté

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.

Étiquettes associées:
js
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal