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 :

Fonction dans une fonction


Sujet :

JavaScript

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    153
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 153
    Points : 48
    Points
    48
    Par défaut Fonction dans une fonction
    Bonjour à tous,

    Ci-dessous un décompte qui fonctionne SUPER BIEN tout seul...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    var nombre2=100;
    function nombre(){
    if (nombre2>0){
    	document.getElementById('compteur').innerHTML=nombre2;
    	nombre2--;
    }}
    var monInterval2 = setInterval(nombre, 1000);

    Le problème est que je souhaite l'insérer à l'intérieur d'une autre fonction (fonction dans une fonction) et là, plus rien ne fonctionne.

    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
    <script language="javascript">
    function charge()
         {
     $.ajax({   
            url: 'jeup4verif2.php',  
    		cache: false,
    		dataType: "json",
     		returnJSONType: "json",
            success: function(returnJSON) { 
    		$srcnew=returnJSON.donnee1;
    		$picturenew=returnJSON.donnee2;
    		$final=returnJSON.donnee3;
    		document.getElementById($picturenew).src=$srcnew;
    		document.getElementById('tour').innerHTML=returnJSON.donnee4;
    		document.getElementById('final').innerHTML=$final;
     
    		var nombre2=100;
    function nombre(){
    if (nombre2>0){
    	document.getElementById('compteur').innerHTML=nombre2;
    	nombre2--;
    }}
    var monInterval2 = setInterval(nombre, 1000);
     
        }
    });
    	 }
    var monInterval = setInterval(charge, 1000);
    </script>
    Comment je pourrais résoudre ça ?

    Merci à tous,
    Antoine

  2. #2
    Membre émérite
    Avatar de Eric2a
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2005
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Points : 2 411
    Points
    2 411
    Par défaut
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    function nombre(){
    	this.n=(typeof this.n=='undefined')?100:this.n-1;
    	document.getElementById('compteur').innerHTML=this.n;
    	if(this.n>0)
    		setTimeout('nombre()',1000);
    }
    setTimeout('nombre()',1000);
    ?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    153
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 153
    Points : 48
    Points
    48
    Par défaut
    C'est pareil.
    La fonction marche toute seule mais pas si on l'imbrique dans ma seconde fonction.

    Merci par avance

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 89
    Points : 102
    Points
    102
    Par défaut
    Salut,

    Si tu ne lance ton appel ajax qu'une seule fois (donc si tu supprime la ligne "var monInterval = setInterval(charge, 1000);"), qu'est ce que ca fait ?

    Vu d'ici, l'appel ajax est appelé toutes les secondes, donc la variable nombre2 mise à 100 toutes les secondes, donc le contenu de ta balise "compteur" mis à 100 toutes les secondes, bref, effectivement, ca ne va pas bouger beaucoup !

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    153
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 153
    Points : 48
    Points
    48
    Par défaut
    Pas faux.

    Mais le souci n'est pas lié à ça car en le testant dans une autre de mes fonctions ça donne pareil (le décompte ne démarre pas).

    Par exemple :

    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
    <script type="text/javascript">  
    $(function(){
     $("#conteneur img" ).click(function(){
     var picture1 = $(this).attr("id");
     $picture2 = $(this);
    $.ajax({ 
    		url: 'jeup4verif.php?play='+picture1,
    		cache: false,
    		dataType: "json",
     		retourJSONType: "json",
    		error: function(xhr,erreur) {alert(erreur)},
            success: function(retourJSON) { 
    			$tour=retourJSON.donnee3;
    			$final=retourJSON.donnee2;
                $picture2.attr('src', retourJSON.donnee1);
    			document.getElementById('tour').innerHTML=$tour;
    			document.getElementById('final').innerHTML=$final;
     
    		function nombre(){
    	this.n=(typeof this.n=='undefined')?100:this.n-1;
    	document.getElementById('compteur').innerHTML=this.n;
    	if(this.n>0)
    		setTimeout('nombre()',1000);
    }
    setTimeout('nombre()',1000);
     
    			if ($final!='') {
    clearInterval(monInterval);
    }  
            }  
        }); 
     });
    });
    </script>
    Alors que la fonction toute seule marche...

    Merci par avance

  6. #6
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    ne l'imbrique pas, laisse la dehors, mais appelle là dans la fonction

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    153
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 153
    Points : 48
    Points
    48
    Par défaut
    Tout à fait. Ca fonctionne. Merci.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Appel d'une fonction dans une fonction d'une même classe
    Par script73 dans le forum Général Python
    Réponses: 3
    Dernier message: 06/03/2015, 10h18
  2. Response.Redirect dans une fonction dans une classe
    Par jpower dans le forum ASP.NET
    Réponses: 14
    Dernier message: 24/08/2007, 09h45
  3. Appeler une fonction dans une fonction
    Par bryanstaubin dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 18/06/2007, 09h39
  4. Import d'une fonction, dans une fonction
    Par Goupo dans le forum Général Python
    Réponses: 2
    Dernier message: 12/01/2007, 16h50
  5. [PHP-JS] une fonction dans une fonction
    Par lodan dans le forum Langage
    Réponses: 6
    Dernier message: 25/06/2006, 19h14

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