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 :

fichier contenant fonction


Sujet :

JavaScript

  1. #1
    Membre régulier
    Inscrit en
    Avril 2010
    Messages
    200
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 200
    Points : 111
    Points
    111
    Par défaut fichier contenant fonction
    Bonjour,

    Sur des éléments html j'ai des "onchange", "onload", "onclick" etc.
    Quelle est la meilleure façon pour externaliser toutes ces fonctions dans un fichier js séparé ? (sachant que j'ai besoin parfois de passer des paramètres...)

    pour le moment j'ai un fichier avec un contenu de ce style :
    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
    window.onload = function() {
     
        document.getElementById('un_id').onclick = function() {
            alert('Not implemented yet !');
            return false;
        };
     
        document.getElementById('encore_un_id').onclick = function() {
            alert('Hello le monde !');
            return false;
        };
     
        document.getElementById('id').onchange = function(parametre) {
            if (parametre === 1)
                alert('OK !');        
     
            return false;
        };
    };
    Quand je n'ai pas de paramètre a passer, c'est nickel ! Quand j'en ai comme la dernière fonction, comment dois-je m'y prendre ?

  2. #2
    Nouveau membre du Club
    Inscrit en
    Avril 2008
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 41
    Points : 37
    Points
    37
    Par défaut
    Citation Envoyé par Air P-E Voir le message
    Bonjour,

    Sur des éléments html j'ai des "onchange", "onload", "onclick" etc.
    Quelle est la meilleure façon pour externaliser toutes ces fonctions dans un fichier js séparé ? (sachant que j'ai besoin parfois de passer des paramètres...)

    pour le moment j'ai un fichier avec un contenu de ce style :
    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
    window.onload = function() {
     
        document.getElementById('un_id').onclick = function() {
            alert('Not implemented yet !');
            return false;
        };
     
        document.getElementById('encore_un_id').onclick = function() {
            alert('Hello le monde !');
            return false;
        };
     
        document.getElementById('id').onchange = function(parametre) {
            if (parametre === 1)
                alert('OK !');        
     
            return false;
        };
    };
    Quand je n'ai pas de paramètre a passer, c'est nickel ! Quand j'en ai comme la dernière fonction, comment dois-je m'y prendre ?
    Lors de l'appel de ta fonction, tu peux directement inclure ton parametre avec sa valeur.
    exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <select name="nom" id="id" onchage="taFonction(document.getElementById('idDeTonElement').value);" >

  3. #3
    Expert éminent sénior

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 912
    Points
    79 912
    Par défaut
    C'est quoi parametre ? C'est le value du champ ? Essayez avec this.value alors.

  4. #4
    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 : 53
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Citation Envoyé par redo_log
    Lors de l'appel de ta fonction, tu peux directement inclure ton parametre avec sa valeur.
    exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <select name="nom" id="id" onchage="taFonction(document.getElementById('idDeTonElement').value);" >
    Tu veux externaliser la fonction en la plaçant en attribut ???
    Citation Envoyé par Air P-E
    Quelle est la meilleure façon pour externaliser toutes ces fonctions dans un fichier js séparé ? (sachant que j'ai besoin parfois de passer des paramètres...)
    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

  5. #5
    Membre régulier
    Inscrit en
    Avril 2010
    Messages
    200
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 200
    Points : 111
    Points
    111
    Par défaut
    Merci de vos réponses !

    @redo_log :
    Oui je sais, c'est ce que j'ai fait en premier lieu mais si j'ai plusieurs actions à effectuer, je suis obligé de faire comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <select name="nom" id="id" onchage="taFonction(document.getElementById('idDeTonElement').value); uneAutreFonction(document.getElementById('autreID').value);" >
    Ce qui est moyen si tu es as plusieurs à mettre comme ça ! Et puis j'aimerais vraiment séparer l'html du javascript !

    @vermine :
    Pas tout à fait, dans mon code, ça correspond plutôt à l'objet SELECT, pas sa valeur. Mais en faisant un this ça ne fonctionne pas !
    Tu parles bien de faire ceci ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    window.onload = function() {
        document.getElementById('id').onchange = function() {
            if (this.value=== 1)
                alert('OK !');        
     
            return false;
        };
    };
    Mais pour mon exemple actuellement je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    window.onload = function() {
        document.getElementById('id').onchange = function() {
            var truc = document.getElementById('id')
            if (truc.value=== 1)
                alert('OK !');        
     
            return false;
        };
    };
    Ce qui fonctinne très bien si on veut travailler sur l'élément en question vu qu'on a juste à le récupérer via son id.

    En fait je pose cette question plus pour une configuration comme celle-ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    window.onload = function() {
        document.getElementById('id').onchange = function(textAAfficher) {
                 document.getElementById('id').value = textAAfficher;
     
            return false;
        };
    };
    en admettant que 'id' correspond à l'id d'une textarea et 'textAAfficher', le texte avec lequel remplir la textarea.

    Vous voyez le truc ? Je sais pas comment passé le texte en paramètre !

    Edit :
    Bovino, je ne comprends pas exactement ce que tu veux dire !

  6. #6
    Expert éminent sénior

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 912
    Points
    79 912
    Par défaut
    Oui c'est à ça que je pensais. D'où vient le textAAfficher ? Je veux dire, il se trouve bien quelque part sur la page ?

  7. #7
    Membre régulier
    Inscrit en
    Avril 2010
    Messages
    200
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 200
    Points : 111
    Points
    111
    Par défaut
    Citation Envoyé par vermine Voir le message
    Oui c'est à ça que je pensais. D'où vient le textAAfficher ? Je veux dire, il se trouve bien quelque part sur la page ?
    textAAfficher serait un texte renvoyé par une requête Ajax.
    Si je récupère mon texte par une requête ajax et que j'ai envie de modifier le contenu d'une textarea, lors d'un clique sur celui-ci (par exemple, pourquoi pas après tout ! ) comment s'y prendre ?

  8. #8
    Membre régulier
    Inscrit en
    Avril 2010
    Messages
    200
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 200
    Points : 111
    Points
    111
    Par défaut
    Il n'y a pas de solutions pour mon problème ?
    Peut-être qu'il existe un autre moyen que la manière dont je m'y suis pris ?

    Je voudrais pouvoir séparer le code html du code javascript en pouvant passer des paramètres à la fonction appelée... Il y a sûrement une solution autre que la mienne !?

  9. #9
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 093
    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 093
    Points : 6 754
    Points
    6 754
    Par défaut
    Voyons voir… Recollons dans les bon ordre les bouts du scénario.

    1/ Une réponse Ajax arrive.
    2/ Le visiteur modifie un champ <select>
    3/ tu voudrais récupérer le texte Ajax dans la fonction qui traite le changement du <select>.

    J'ai bon ?

    Il va falloir passer, d'une manière ou d'une autre, par une variable globale. Par « d'une manière ou d'une autre » je veux dire que tu peux stocker ça sous un espace de noms, ou encore rattacher ce texte à un nœud du DOM, en faisant ce qu'on appelle une propriété expando.

    Je m'explique : au moment ou ta réponse Ajax arrive, elle est traitée par une fonction de rappel. Dans cette fonction de rappel, tu vas attacher le texte de la réponse au nœud DOM représentant ton <select>, et de fait lui créer un attribut qui n'est pas « officiel DOM ». C'est ça qu'on appelle une propriété expando.

    Concrètement :
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <select id="leSelect">
      ...
    </select>
    Code JS : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    window.onload = function() {
     
    var leSelect = document.getElementById('leSelect');
     
    function rappelAjax( texte ) {
    	/* je reste flou sur la mise en œuvre d'Ajax,
    	   ce n'est pas le sujet du topic */
    	leSelect.ajaxTexte = texte;
    };
     
    leSelect.onchange = function() {
    	alert(this.ajaxTexte);
    };
     
    };

    C'est tout !

    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  10. #10
    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 : 53
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Citation Envoyé par Air P-E
    Il n'y a pas de solutions pour mon problème ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById('id').onchange = function(parametre) {...}
    En effet, tant que tu n'auras pas compris que dans la portion de code ci-dessus, parametre ne correspond pas à un paramètre que tu inclus à la fonction mais au nom qu'aura, dans la fonction, le paramètre passé lors de l'appel, il n'y aura pas de solution.

    D'autre part, s'agissant d'une fonction anonyme lancée lors du déclenchement d'un événement, je ne vois pas comment il serait possible de lui passer un paramètre...
    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

Discussions similaires

  1. Réponses: 0
    Dernier message: 27/09/2014, 11h11
  2. Réponses: 9
    Dernier message: 29/04/2008, 13h38
  3. Réponses: 2
    Dernier message: 03/06/2005, 11h01
  4. Trouver un fichier contenant une chaine ?
    Par narmataru dans le forum Linux
    Réponses: 2
    Dernier message: 29/04/2004, 10h49
  5. Fichier de fonctions globales
    Par PEM dans le forum C++Builder
    Réponses: 5
    Dernier message: 10/07/2002, 21h35

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