Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript > Bibliothèques & Frameworks > jQuery
jQuery Forum d'entraide sur le framework jQuery. Avant de poster : Tutoriels jQuery, FAQ jQuery, Tous les tutoriels JavaScript, Toutes les FAQ JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/11/2011, 01h15   #1
Invité de passage
 
Inscription : janvier 2005
Messages : 23
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 23
Points : 2
Points : 2
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 :
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 :
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");
		}
	});
});
doudou34 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/11/2011, 03h47   #2
Membre habitué
 
Homme Mathias Philippe
Développeur Web
Inscription : septembre 2011
Messages : 75
Détails du profil
Informations personnelles :
Nom : Homme Mathias Philippe
Localisation : Philippines

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

Informations forums :
Inscription : septembre 2011
Messages : 75
Points : 121
Points : 121
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 :
alertErrorMessage = function (sTexteMessage)
MrPringle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/11/2011, 00h40   #3
Invité de passage
 
Inscription : janvier 2005
Messages : 23
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 23
Points : 2
Points : 2
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.
doudou34 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/11/2011, 03h42   #4
Membre habitué
 
Homme Mathias Philippe
Développeur Web
Inscription : septembre 2011
Messages : 75
Détails du profil
Informations personnelles :
Nom : Homme Mathias Philippe
Localisation : Philippines

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

Informations forums :
Inscription : septembre 2011
Messages : 75
Points : 121
Points : 121
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.
MrPringle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/11/2011, 10h45   #5
Rédacteur
 
Avatar de danielhagnoul
 
Homme Daniel Hagnoul
Étudiant perpétuel
Inscription : février 2009
Messages : 3 221
Détails du profil
Informations personnelles :
Nom : Homme Daniel Hagnoul
Âge : 61
Localisation : Belgique

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

Informations forums :
Inscription : février 2009
Messages : 3 221
Points : 6 767
Points : 6 767
Citation:
Envoyé par MrPringle Voir le message
Je vais me permettre de faire mon auto-promo, [...].
Outils pour construire un code jQuery évolutif
__________________

FAQ jQuery

Mon cahier d’exercices sur jQuery & Co

Si un message vous a aidé ou vous semble pertinent, votez pour lui !
danielhagnoul est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h43.


 
 
 
 
Partenaires

Hébergement Web