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

jQuery Discussion :

Appel d'une fonction dans un fichier différent


Sujet :

jQuery

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 25
    Points : 14
    Points
    14
    Par défaut Appel d'une fonction dans un fichier différent
    Bonjour,
    voici mon soucis :
    je dispose de 2 fichiers javascript utilisant tous les 2 la bibliotheque JQuery.
    Je souhaiterais appeler une fonction du premier fichier dans le 2nd mais cela ne marche pas.
    Pourriez-vous me dire pourquoi et s'il y a une solution ?
    Par avance merci.

    Voici un exemple de ce que je cherche à faire :
    (les 2 fichiers sont bien exportés par le fichier HTML "maitre")

    Fichier1.js
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    $(document).ready(function() { 
    	/**
    	 * Permet d'afficher une boite de dialogue dans le cas d'une erreur
    	 * @param string sTexteMessage : texte du message d'erreur
    	 */
    	function alertErrorMessage(sTexteMessage)
    	{
    		//code utilisant JQUERY-UI
    	}
    });

    Fichier2.js
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $(document).ready(function() { 
    	$("#bouton").click(function()
    	{
    		var sValeur = $("#toto").val();
    		if(sValeur == ""){
    			alertErrorMessage("Veuillez saisir la valeur de toto");
    		}
    	});
    });

  2. #2
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2011
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Philippines

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2011
    Messages : 89
    Points : 142
    Points
    142
    Par défaut
    Tu utilises deux closures différentes, c'est normal. Il faut que tu déclares la première fonction en variable globale, remplaces la ligne 7 par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alertErrorMessage = function (sTexteMessage)

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 25
    Points : 14
    Points
    14
    Par défaut
    Arf Javascript et ses closures, c'est le truc que j'ai toujours eu du mal à comprendre....
    Merci en tout cas MrPringle pour ta réponse.

    Pourquoi lorsque je met "var" devant la ligne que tu me proposes en tant que correctif, cela ne marche plus ?
    Lorsque je déclare la fonction en dehors de la closure, cela marche correctement mais est-ce bien propre de déclarer une fonction dont le code utilise jquery et jquery-ui en dehors de la closure de jquery ?

    Aurais tu un bon article à me conseiller pour comprendre clairement ces closures ?
    Car en cherchant sur le net, on trouve un peu tout et n'importe quoi... ca me semble pas vraiment complet
    Merci encore.

  4. #4
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2011
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Philippines

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2011
    Messages : 89
    Points : 142
    Points
    142
    Par défaut
    Si tu mets "var", la fonction est déclarée dans la closure (fonction jQuery contenante), si tu l'omets, elle est déclarée globalement, dans l'objet window et est donc accessible par tous tes scripts.

    Il est déconseillé d'utiliser les variables globales pour des raisons de compatibilité entre les scripts, mais tu peux le faire, n'en abuse pas.
    Si tu utilises beaucoup de variables globales, le mieux est de les regrouper dans un objet.

    Je vais me permettre de faire mon auto-promo, j'avais écris un article sur le scope des variables et le hoisting en JS, j'espère qu'il te sera utile.

  5. #5
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125
    Par défaut
    Citation Envoyé par MrPringle Voir le message
    Je vais me permettre de faire mon auto-promo, [...].
    Outils pour construire un code jQuery évolutif

Discussions similaires

  1. Réponses: 4
    Dernier message: 27/11/2008, 18h02
  2. appel d'une fonction dans un autre fichier jss
    Par Davee dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 28/06/2008, 20h12
  3. appel d'une fonction dans un autre fichier
    Par funboard dans le forum Langage
    Réponses: 2
    Dernier message: 08/02/2008, 09h26
  4. appel à une fonction dans un fichier externe
    Par corentin59 dans le forum Langage
    Réponses: 1
    Dernier message: 11/01/2008, 12h22
  5. Réponses: 1
    Dernier message: 12/04/2007, 11h50

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