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 passer des variables hors des functions ?


Sujet :

JavaScript

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Février 2007
    Messages
    747
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 747
    Points : 168
    Points
    168
    Par défaut Faire passer des variables hors des functions ?
    Bonjour,

    j'ai cette fonction javascript à modifier pour faire passer une variable de la 2ème fonction vers la 1ère. Et je n'y arrive pas...
    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
    function gk_is_style1_text_anim(wrapper, contents, which, $G){
    	var txt = $E(".gk_is_text",wrapper);
    	// Je voudrais tester ici la valeur de "deja_venu" déclarée dans la fonction plus bas		
    	if (typeof(deja_venu)=='undefined') {
    		var old_etat = etat_initial;
    	} else {
    		alert ("Déjà passé");
    		var old_etat = new_etat;
    	}
    	new Fx.Opacity(txt,{duration: $G['anim_speed']/2}).start(1,0);
    	(function(){
    		new Fx.Opacity(txt,{duration: $G['anim_speed']/2}).start(0,1);
    		txt.innerHTML = contents[which];
    	}).delay($G['anim_speed']);
    		// Je déclare la variable
    		var deja_venu = "OUI";
    }
    Mais ma variable deja_venu est toujours undefined...


    C'est peut-être parce que la fonction principale est appelée par du PHP ?

  2. #2
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 094
    Points : 6 755
    Points
    6 755
    Par défaut
    Salut,

    tu déclares ta variable avec var, elle est donc locale à ta fonction. Normal ! Un peut de révision te fera du bien : la portée des variables.

    Sinon, tu parles d'une deuxième fonction, mais je n'en vois qu'une seule… Au fait, as-tu examiné, avec ton navigateur, ton code HTML généré ?

    Note qu'utiliser des variables globales n'est pas la meilleure façon de programmer en JS.

    Et juste par curiosité : quelle bibliothèque tu utilises ?

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Février 2007
    Messages
    747
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 747
    Points : 168
    Points
    168
    Par défaut
    Pour les fonctions :
    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
    function gk_is_style1_text_anim(wrapper, contents, which, $G){
    	var txt = $E(".gk_is_text",wrapper);
    	// Je voudrais tester ici la valeur de "deja_venu" déclarée dans la fonction plus bas		
    	if (typeof(deja_venu)=='undefined') {
    		var old_etat = etat_initial;
    	} else {
    		alert ("Déjà passé");
    		var old_etat = new_etat;
    	}
    	new Fx.Opacity(txt,{duration: $G['anim_speed']/2}).start(1,0);
    	(function(){
    		new Fx.Opacity(txt,{duration: $G['anim_speed']/2}).start(0,1);
    		txt.innerHTML = contents[which];
    	}).delay($G['anim_speed']);
    		// Je déclare la variable
    		deja_venu = "OUI";
    }
    Merci pour la portée avec var !
    Mais même en l'enlevant je n'arrive pas à passer la valeur de la variable "deja_venu" de la fonction 2 vers la fonction 1... Et quand le code repasse par la fonction 1 il me dit que : "Can't find variable: deja_venu"

    Le javascript doit être tiré de Mootools puisque le code provient d'un composant de Joomla.

  4. #4
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 094
    Points : 6 755
    Points
    6 755
    Par défaut
    D'accord.

    Alors. Il y a une petite subtilité entre une variable non déclarée, et une variable non initialisée. Les variables non déclarées provoquent des erreurs si on tente d'y accéder. En l'occurence, ta variable deja_venu n'est pas déclarée au moment où tu veux la tester, du coup tu as une erreur.
    Pour remédier à ce problème, déclare-la, mais sans l'initialiser :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var deja_venu;
     
    function gk_is_style1_text_anim(wrapper, contents, which, $G){
    ...
    Autre chose, pas besoin de typeof pour tester si une variable est initialisée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if (deja_venu === undefined) {
    ...

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Février 2007
    Messages
    747
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 747
    Points : 168
    Points
    168
    Par défaut
    Merci

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

Discussions similaires

  1. Initialiser des variables hors constructeur
    Par sql_ignorant dans le forum Langage
    Réponses: 6
    Dernier message: 20/02/2011, 23h05
  2. Réponses: 4
    Dernier message: 01/10/2009, 17h56
  3. [MySQL] Récupérer des variables hors d'une fonction
    Par piero-la-lune dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 26/02/2008, 10h30
  4. Faire suivre une variable avec des espaces
    Par jonathan34 dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 14/02/2008, 20h57
  5. Réponses: 11
    Dernier message: 09/12/2005, 14h59

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