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 :

Appeler une fonction js d'un fichier externe (js)


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2011
    Messages : 17
    Par défaut Appeler une fonction js d'un fichier externe (js)
    Bonjour,

    Cette question est surement naive, car c'est vraiment le B.A.-BA du js, mais ... Je ne parviens pas à lier mon fichier js à ma page php.

    En résumé, j'ai 4 fonctions appelées sur des événements onclick sur des input. Les fonctions ne sont pas très compliquées, je les ai testées en les écrivant dans le fichier php (entre les balises <script>), tout fonctionnait à merveille.

    Je souhaite désormais les enregistrer dans un fichier .js, mais cela ne fonctionne plus. J'ai pourtant lu des dizaines de tutoriaux sur divers sites, et je ne comprends pas ce que j'ai fait de travers.

    Voici le head de ma page php qui appèle les fonctions :

    Code xhtml : 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
     
    <head>
     
    	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    	<title>IODE Ing&eacute;nierie : Aperçu avant Impression</title>
    	<link rel="shortcut icon" href="/design/images/favicon_iode.png" />
    	<link rel=stylesheet media="screen,print" type="text/css" title="Design" href="/design/filtres.css" />
     
    	<script language=javascript type="text/javascript" src="fonctions_javascript.js"></script>
     
    	<!--[if IE]>
    		<link rel=stylesheet media="screen,print" type="text/css" title="Design" href="/design/design_ie.css" />
    	<![endif]-->
     
     
     
    </head>

    Voici ensuite mon fichier fonctions_javascript.js :

    Code javascript : 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
     
    /* ************************************************* */
    /* ************ Fonctions Javascript *************** */
    /* ************************************************* */
     
     
     
    function maj_colonnes()
    //appelée par filtre_attributs.php lors de la validation du formulaire, pour actualiser la page apercu.php
    {
    	alert('lancement de la fonction maj_colonnes()');
    	setTimeout("window.opener.location.replace('http://localhost/apercu.php')", 200);
    	setTimeout('self.close()',800);
    	return(false);
    }
     
    function retour_rech()
    //appelée par filtre_attributs.php sous le formulaire, pour revenir à la page d'accueil
    {
    	setTimeout("window.opener.location.replace('http://localhost/accueil.php?o=2')", 200);
    	setTimeout('self.close()',500);
    	return(false);	
    }
     
    function afficher_tout()
    //pour afficher apercu.php avec toutes les colones visibles
    {
    	setTimeout("window.opener.location.replace('http://localhost/apercu.php?cocher=afficher_tout')", 200);
    	setTimeout('self.close()',500);
    	return(false);	
    }
     
    function afficher_rien()
    //pour afficher apercu.php avec aucune des colones visibles
    {
    	setTimeout("window.opener.location.replace('http://localhost/apercu.php?cocher=afficher_rien')", 200);
    	setTimeout('self.close()',500);
    	return(false);	
    }

    Et enfin, voici un endroit où j'appèle la première fonction (maj_colonnes() ):

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    	<td	colspan="2">
    		<INPUT 	type="submit" 
    				value="Mettre &agrave; jour les colonnes" 
    				class="bouton_simple not_print" 
    				onclick="javascript:maj_colonnes();" />
    	</td>


    Je suppose que c'est une erreur stupide, mais j'ai passé tellement de temps à la chercher que je suis condamné à ne plus la voir. Merci d'avance si l'un d'entre vous prenait le temps de m'éclairer.

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Lorsque tu cliques sur un input de type submit, la fonction est lancée puis le formulaire est soumis immédiatement, tu n'as donc pas le temps de voir les modifications avant que la page soit rechargée.
    Change ton input en type button et ça arrangera les choses (sauf que tu n'auras plus de submit )
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2011
    Messages : 17
    Par défaut
    Hum ... Je vais peut-être dire une connerie (parce que je suis novice), mais c'est à ca que sert la fonction setTimeout(), non?

    Parce que, comme je le disais, mes fonctions fonctionnent parfaitement si j'écris leur définition dans mon fichier php.

  4. #4
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 442
    Par défaut
    Première question : est-ce que ton fichier js est bien chargé ?
    Deuxième question : est-ce que ta fonction est bien exécutée ?

    30 façon de trouver la réponse à ces questions. Je te laisse trouver celle qui te convient et nous donner les réponses

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2011
    Messages : 17
    Par défaut
    Bonjour,

    C'est mon fichier qui semble ne pas se charger du tout (un petit alert en haut du fichier qui ne s'execute même pas me permet d'arriver à cette conclusion).

  6. #6
    Expert confirmé
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par défaut
    où as-tu mis ton fichier js et ton fichier php sur ton disque
    car tel que tu l'as écrit les deux doivent être au même endroit

    A+JYT

  7. #7
    Expert confirmé
    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 : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 094
    Par défaut
    À tout hasard…
    Citation Envoyé par thomas_legrand Voir le message
    Code xhtml : Sélectionner tout - Visualiser dans une fenêtre à part
    <script language=javascript type="text/javascript" src="fonctions_javascript.js"></script>
    Retire l'attribut language, on sait jamais
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  8. #8
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Citation Envoyé par Watilin Voir le message
    À tout hasard…

    Retire l'attribut language, on sait jamais
    Sinon il doit mettre la valeur javascript dans des quotes.

    A+.

Discussions similaires

  1. Appel d'une fonction JS d'un fichier JS externe
    Par loic20h28 dans le forum jQuery
    Réponses: 22
    Dernier message: 29/09/2011, 00h07
  2. Réponses: 1
    Dernier message: 08/05/2008, 08h51
  3. appel à une fonction dans un fichier externe
    Par corentin59 dans le forum Langage
    Réponses: 1
    Dernier message: 11/01/2008, 12h22
  4. Réponses: 12
    Dernier message: 12/05/2006, 09h21
  5. Appel d'une fonction pour renommer un fichier
    Par navis84 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 13/04/2006, 15h13

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