IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Faire une fonction


Sujet :

JavaScript

  1. #1
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 898
    Points : 442
    Points
    442
    Par défaut Faire une fonction
    Bonjour.

    J'ai récupéré une fonction qui permet d'afficher le nombre de jours entre aujourd'hui et une date future.
    Ce code utilise un formulaire et des input pour effectuer les calculs et afficher le nombre de jours.
    Je voudrais pouvoir effectuer tous les calculs sans utiliser ni de formulaire ni les input mais uniquement des variables pour pouvoir mettre la fonction dans un fichier .js et l'appeler à l'ouverture de ma page.
    Donc si quelqu'un peut m'aider, voici le code que j'ai déjà un peu modifier mais qui marche:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    <script language="JavaScript">
    function annee(an) {
      if ((navigator.appName == "Netscape") && (parseFloat(navigator.appVersion) >= 4.06))
         an = eval(an + 1900);
      return an;
    }
    function completeA2(nombre) {
      return ((nombre <= 9) ? "0" : "") + nombre;
    }
    function afficheDate() {
      var jour = new Date();
      document.formulaire.date1.value = (completeA2(jour.getDate()) + "/" + completeA2(jour.getMonth()+1) + "/" + annee(jour.getYear()));
      return (completeA2(jour.getDate()) + "/" + completeA2(jour.getMonth()+1) + "/" + annee(jour.getYear()));
    }
     
    function formatDate(chaine) {
      var ctl = /^(\d\d?)\/(\d\d?)\/(\d\d)(\d\d)?$/;
      var tab = ctl.exec(chaine);
      if (tab.length) {
         this.jour = tab[1];
         this.mois = tab[2] - 1;
         if (tab.length > 4) this.an = (tab[4]) ? tab[3] + tab[4] : 2000 + eval(tab[3]);
         else this.an = 2000 + eval(tab[3]);
         this.OK = true;
      }
      else this.OK = false;
    }
     
    function nombreJours(autreDate) {
      if (this.OK) {
         var date1 = new Date(this.an, this.mois, this.jour);
         if (autreDate.OK)
            var date2 = new Date(autreDate.an, autreDate.mois, autreDate.jour);
         else return "erreur";
      }
      else return "erreur";
      if (date1.getTime() < date2.getTime())
         return Math.floor((date2.getTime() - date1.getTime()) / 1000 / 60 / 60 / 24);
      else  
         return Math.floor((date1.getTime() - date2.getTime()) / 1000 / 60 / 60 / 24);
    }
     
    formatDate.prototype.nombreJours = nombreJours;
     
    function calcDuree(case1, case2){
      if ((document.formulaire[case1].value == "") || (document.formulaire[case2].value == ""))
         document.formulaire.duree.value = "";
      else {
         d1 = new formatDate(document.formulaire[case1].value);
         d2 = new formatDate(document.formulaire[case2].value);
    	return d1.nombreJours(d2);
      }
    }
    </script>
     
    <BODY>
    <form name="formulaire">
    <input type="hidden" name="date1" size=0 value="">
    <input type="hidden" name="date2" size=0 value="10/06/2006">
    <input type="hidden" name="duree" size=10 value="">
    </form>
    Nous sommes le <script>document.write( afficheDate());</script> 
    <br>
    Il reste <b>
    <script>document.write( calcDuree('date1', 'date2'));</script></b> jours jusqu'au 10/06/2006
    Merci d'avance

  2. #2
    Expert éminent

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Points : 7 641
    Points
    7 641
    Par défaut
    Voila une méthode permettant de calculer la différence entre deux dates:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    function dateDiff(per,datedebut,datelimite)	{
     
        switch(per) {
            case "y": return datelimite.getYear()-datedebut.getYear();
            case "m": return (datelimite.getYear()-datedebut.getYear())*12 + datelimite.getMonth()-datedebut.getMonth();
        }
     
    	var d = (datelimite.getTime()-datedebut.getTime())/1000
     
        switch(per) {
            case "w": d/=7
            case "d": d/=24
            case "h": d/=60
            case "n": d/=60
            case "s": break
            default: return ""
    	}
     
        return Math.floor(d);
    }
    Pour les jours, c'est "d"....

  3. #3
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 898
    Points : 442
    Points
    442
    Par défaut
    Heu! bon ben là j'ai pas tout compri

    Si tu peux me dire comment j'utilise la fonction pour afficher le nbre de jours jusq'au 10/06/2006.....

    Sinon je me creuserais encore la tête

    Merci

  4. #4
    Expert éminent

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Points : 7 641
    Points
    7 641
    Par défaut
    Citation Envoyé par philippef
    Heu! bon ben là j'ai pas tout compri

    Si tu peux me dire comment j'utilise la fonction pour afficher le nbre de jours jusq'au 10/06/2006.....

    Sinon je me creuserais encore la tête

    Merci
    Ben il faut créé des objets date:

    Pour auourd'hui:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    date1 = new Date();
    Puis pour le 10/06/2006:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    date2 = new Date();
    date2.setDay(10);
    date2.setMonth(5); //attention, subtilité
    date2.setYear(2006);
    Puis simplement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    alert(dateDiff('d',date1,date2));

  5. #5
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 898
    Points : 442
    Points
    442
    Par défaut
    J'ai essayé de regrouper tout ça .....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    <script language="JavaScript">
    function dateDiff(per,datedebut,datelimite)   { 
     
        date1 = new Date(); 
        date2 = new Date(); 
        date2.setDay(10); 
        date2.setMonth(5); //attention, subtilité 
        date2.setYear(2006);
     
        switch(per) { 
            case "y": return datelimite.getYear()-datedebut.getYear(); 
            case "m": return (datelimite.getYear()-datedebut.getYear())*12 + datelimite.getMonth()-datedebut.getMonth(); 
        } 
     
       var d = (datelimite.getTime()-datedebut.getTime())/1000 
     
        switch(per) { 
            case "w": d/=7 
            case "d": d/=24 
            case "h": d/=60 
            case "n": d/=60 
            case "s": break 
            default: return "" 
       } 
     
        return Math.floor(d); 
     
    alert(dateDiff('d',date1,date2)); 
    }
    </script>
     
    <input type="button" value="valider" onclick="(datediff('d',date1,date2))">
    ....mais bon ça marche pas!!
    je me doute que ça doit être simple, mais j'utilise pas beaucoup js et les fonctions c'est pas trop mon truc
    Encore merci

  6. #6
    Expert éminent

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Points : 7 641
    Points
    7 641
    Par défaut
    Dans l'ordre, ça donnerait plutot:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    <script language="JavaScript">
    var date1 = new Date(); 
    var date2 = new Date(); 
    date2.setDay(10); 
    date2.setMonth(5); //attention, subtilité 
    date2.setYear(2006);
     
    function dateDiff(per,datedebut,datelimite)   { 
     
        switch(per) { 
            case "y": return datelimite.getYear()-datedebut.getYear(); 
            case "m": return (datelimite.getYear()-datedebut.getYear())*12 + datelimite.getMonth()-datedebut.getMonth(); 
        } 
     
       var d = (datelimite.getTime()-datedebut.getTime())/1000 
     
        switch(per) { 
            case "w": d/=7 
            case "d": d/=24 
            case "h": d/=60 
            case "n": d/=60 
            case "s": break 
            default: return "" 
       } 
     
        return Math.floor(d); 
    }
    </script>
     
    <input type="button" value="valider" onclick="(datediff('d',date1,date2))">
    Ca devrait le faire.

  7. #7
    Rédacteur
    Avatar de MasterOfChakhaL
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2004
    Messages
    2 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 147
    Points : 3 264
    Points
    3 264
    Par défaut
    tu appelles ta fonction avec des paramètres que tu initialises dans cette même fonction...
    C'est un peu le serpent qui semord la queue, non?

    en fait, tu n'es vrament pas loin de la solution

    ton "bloc" ou tu parles de subtilité, et bien tu le mets juste en dehors de ta fonction et ca devrait rouler tout seul...

  8. #8
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 898
    Points : 442
    Points
    442
    Par défaut
    Pour être sûr de pas me tromper j'ai fait un copier/coller, j'ai ajouté alert(...) et là : "erreur sur la page" dans la barre d'état

    je me demande si il ne manque pas un ; après var d = .....
    et aussi après case "w" etc...

Discussions similaires

  1. Réponses: 2
    Dernier message: 17/08/2006, 14h50
  2. Comment faire une fonction - procédure
    Par Madmac dans le forum C
    Réponses: 14
    Dernier message: 12/08/2006, 09h57
  3. Comment faire une fonction qui renvoi un tableau.
    Par poly128 dans le forum Delphi
    Réponses: 2
    Dernier message: 01/06/2006, 01h04
  4. [C#][Débutant] Comment faire une fonction FindWindow ?
    Par Cazaux-Moutou-Philippe dans le forum Windows Forms
    Réponses: 4
    Dernier message: 27/04/2006, 13h19
  5. [VB6] Comment faire une fonction qui renvoie 2 résultats
    Par tazarine dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 15/01/2004, 00h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo