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

Conception Web Discussion :

joindre une variable à un nom de fonction en javascript


Sujet :

Conception Web

  1. #1
    Membre confirmé
    Avatar de trx337
    Homme Profil pro
    Intégrateur Web
    Inscrit en
    Décembre 2015
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Intégrateur Web
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Décembre 2015
    Messages : 74
    Billets dans le blog
    1
    Par défaut joindre une variable à un nom de fonction en javascript
    bonjour

    j'ai une fonction ( en javascript ) par exemple

    je voudrais remplacer le no 14 par une variable no

    puis appeler ma variable pour que le no change facilement .

    bref

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var no = 14 ;
    function machinno() ;
    j'ai cherché mais je ne sais pas faire .

    est ce que quelqu'un peut m'aider car ceci :

    ne fontionne pas .

    merci

    Suite on peux peut-être écrire

    let no = 14;
    let f = 'machin';
    Nom = f+no;
    Fonction Nom();

  2. #2
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 699
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 699
    Par défaut
    pour exécuter plusieurs fonctions, vous pouvez les stocker dans un tableau comme cela :
    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
    const fonctions = [
    	e => {
    		console.log("la 1re fonction");
    	},
    	e => {
    		console.log("la 2e fonction");
    	},
    ];
     
     
    fonctions.forEach(fonction => {
     
    	fonction();
     
    });

  3. #3
    Membre confirmé
    Avatar de trx337
    Homme Profil pro
    Intégrateur Web
    Inscrit en
    Décembre 2015
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Intégrateur Web
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Décembre 2015
    Messages : 74
    Billets dans le blog
    1
    Par défaut
    Merci Mathieu mais ce n'est pas tout à fait ce que je voulais faire . Je veux juste changer le nom 14 rapidement en 15 car il y aura plusieurs noms finissant par 14.

  4. #4
    Membre confirmé
    Avatar de trx337
    Homme Profil pro
    Intégrateur Web
    Inscrit en
    Décembre 2015
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Intégrateur Web
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Décembre 2015
    Messages : 74
    Billets dans le blog
    1
    Par défaut
    bonjour

    j'ai une fonction ( en javascript ) par exemple

    je voudrais remplacer le no 14 par une variable no

    puis appeler ma variable pour que le no change facilement .

    bref

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var no = 14 ;
    function machinno() ;
    j'ai cherché mais je ne sais pas faire .

    est ce que quelqu'un peut m'aider car ceci :

    ne fontionne pas .

    merci

    Suite on peux peut-être écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    let no = 14;
    let f = 'machin';
    Nom = f+no;
    Function Nom();

  5. #5
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 699
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 699
    Par défaut
    montrez nous pourquoi vous avez besoin de cela avec un exemple, vous partez peut-être dans une mauvaise direction.

  6. #6
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 499
    Par défaut
    Bonjour,

    En Javascript, les fonctions définies au niveau global, tout comme les variables globales, sont considérés comme des objets appartenant à window (parce tout script est censé faire partie d'un document web). Tu peux donc énumérer son contenu et l'indexer pour retrouver la fonction qui t'intéresse et, de là, l'invoquer :

    Code Javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function fonction_numero_1()
    {
        console.log("Bonjour de la part de la fonction numéro un.");
    }
     
    var n = 1;
     
    window["fonction_numero_" + n]();

    Cela dit, comme expliqué plus haut, il y a presque TOUJOURS une meilleure manière de faire. Et neuf fois sur dix, la « meilleure des meilleures manières » consiste souvent en un tableau de callbacks comme décrit. Donc, ne considère pas cette proposition comme la réponse à ce que tu attends en estimant que « ça suffit bien pour ce que tu veux en faire », comme on le dit souvent, mais comme un point de départ pour converger doucement vers la meilleure approche.

    Bon courage.

  7. #7
    Membre confirmé
    Avatar de trx337
    Homme Profil pro
    Intégrateur Web
    Inscrit en
    Décembre 2015
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Intégrateur Web
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Décembre 2015
    Messages : 74
    Billets dans le blog
    1
    Par défaut
    voici un morceau de mon script:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    function maFontionduree14() {
       
    	var duree14 = videoessai.duration;
        document.getElementById("demoduree14").innerHTML ="durée totale du film:"+ duree14+ " en seconde";
              }
    
    function myFunctionfin14(){
          var fin14 = '<img width="500" src= "images/carte4.jpg">';
          document.getElementById("demofin14").innerHTML = "affiche image de fin<br>"+fin14;
              }
    var tempscourant14 = videoessai;


    vous voyez que le nombre 14 apparait souvent .
    c'est celui la que je voudrais mettre en variable
    car plus tard je n'aurais plus qu'à changer ce numero en 15

    donc ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    let n = 14;
    let nomf = "maFontionduree"
    let nomFonction = nomf+n;
    alert(nomFonction);
    fonctionne bien . j'obtiens maFontionduree14

    mais si je l'utilise pour ma fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    function nomFonction() ;
    eh bien ça ne marche pas . le script ne fonctionne pas . il ne transforme pas nomFonction en maFontionduree14.

    Bon mais ceci n'est pas tres grave .

    ceci dit il y a quelque chose qui marche : ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById("demofin14");
    on peut écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    let n = 14;
    document.getElementById("demofin"+14);
    mais pour

    var duree14;

    on ne peut pas écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    let n = 14 ;
     var duree+n ;
    voilà c'est tout ; et je cherche quelque chose de simple ;
    on peut dire qu'il est difficile de faire ceci sur les noms de fonction ou les noms de variable .
    Le protocole ne l'admet pas . voila voila voila

  8. #8
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 699
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 699
    Par défaut
    si vous avez plusieurs fonctions qui ont du code en commun, vous pouvez les factoriser comme cela :

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    function afficher_duree(identifiant_video)
    {
    	const element = document.getElementById(`demoduree${identifiant_video}`);
     
    	element.innerHTML = `durée totale du film : ${videoessai.duration} s`;
     
    }
     
     
    // et donc vous aurez une seule fonction a appeller
    afficher_duree(14);
    afficher_duree(9);

  9. #9
    Membre confirmé
    Avatar de trx337
    Homme Profil pro
    Intégrateur Web
    Inscrit en
    Décembre 2015
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Intégrateur Web
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Décembre 2015
    Messages : 74
    Billets dans le blog
    1
    Par défaut
    merci effectivement , cela me rappelle des souvenirs de cours ; on peut mettre plusieurs variable dans la parenthèse .

    mais ceci ne marche pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function maFontionduree(id) {
        var duree${id} = videoscelled.duration;
    }
    cela me fait une erreur.


    autre question php:
    pour envoyer un mail , voici le script :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    mail('trx337@yahoo.fr', 'prenom nom email messageaccordeon', $a." ".$b." ".$c."\n".$d."\n".$f ,'From:jean<webmaster@jeanmelody.com>');
    c'est le From que je ne comprends pas .
    1 : il semble obligatoire
    et 2 CECI /<webmaster@jeanmelody.com> semble venir de mon serveur . si l'on change le mot webmaster , cela ne fonctionne pas .

  10. #10
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 699
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 699
    Par défaut
    comme l'a dit Obsidian il faut éviter de faire cela avec des noms de fonctions ou de variables.
    cela rentre dans la catégorie de la création de code à l'exécution et doit être la dernière solution après avoir essayer d'autres façon de coder (et il y en a souvent) et cela en javascript et dans la plupart des langages de programmation. la création de code à l'exécution a plusieurs inconvénients comme une mauvaise lisibilité du code et une mauvais optimisation du code à l'exécution.

    expliquez nous l'objectif de votre code si vous souhaitez plus de conseils sur l'organisation du code. d'après ce que vous nous avez montré je suppose qu'il y a plusieurs vidéos et l'affichage d'informations comme la durée par exemple. qu'y a-t-il d'autre ?

  11. #11
    Membre confirmé
    Avatar de trx337
    Homme Profil pro
    Intégrateur Web
    Inscrit en
    Décembre 2015
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Intégrateur Web
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Décembre 2015
    Messages : 74
    Billets dans le blog
    1
    Par défaut
    merci pour la reponse ; je pense avoir bien été renseigné .

    il me manque une reponse pour mon envoi mail en php . ci dessus j'ai formulé ma question mais je la réécris :



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mail('trx337@yahoo.fr', 'prenom nom email messageaccordeon', $a." ".$b." ".$c."\n".$d."\n".$f ,'From:jean<webmaster@jeanmelody.com>');
    c'est le From que je ne comprends pas .
    1 : il semble obligatoire
    et 2 CECI /<webmaster@jeanmelody.com> semble venir de mon serveur . si l'on change le mot webmaster ,ou bien jeanmelody , cela ne fonctionne pas .

  12. #12
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 699
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 699
    Par défaut
    pour votre questions de php, il faudrait que vous créiez une nouvelle discussion dans le forum php.

    voici un exemple de ce qu'il est possible de faire en javascript, avec des écouteurs d'évènements qui sont associés dans le code javascript :
    Code html : 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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    <!DOCTYPE html>
    <html lang="fr">
    <head>
    	<meta charset="UTF-8"/>
    	<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
    </head>
    <body>
     
    <div class="conteneur_video">
    	<video controls="controls">
    		<source
    			src="https://upload.wikimedia.org/wikipedia/commons/c/ca/12-11-2013_Jours_03_D%C3%A9couverte_de_la_r%C3%A9gion_d%27Alto_Mira.webm"
    		/>
    	</video>
    </div>
    <div class="conteneur_video">
    	<video controls="controls">
    		<source
    			src="https://upload.wikimedia.org/wikipedia/commons/a/a9/Asta_ambulance_Enregistrement_de_demande_d%27assistance.webm"
    		/>
    	</video>
    </div>
    <div class="conteneur_video">
    	<video controls="controls">
    		<source
    			src="https://upload.wikimedia.org/wikipedia/commons/transcoded/7/74/L06a.ogv/L06a.ogv.720p.vp9.webm"
    		/>
    	</video>
    </div>
     
     
    <script>
    "use strict";
     
    /*  * /
    console.clear();
    /*  */
     
     
    const affichage_nombre = new Intl.NumberFormat("fr-FR", {
            "style" : "decimal",
            "maximumFractionDigits" : 0,
    });
     
     
    function afficher_informations(evenement)
    {
            console.log(evenement);
            
            const balise_video = evenement["target"];
            
            const affichage_position = affichage_nombre.format(balise_video["currentTime"]);
            const affichage_restant = affichage_nombre.format(balise_video["duration"] - balise_video["currentTime"]);
            
            // mise à jour du texte d'information
            balise_video["informations"]["textContent"] = `position : ${affichage_position} s, restant : ${affichage_restant} s`;
            
    }
     
     
    document.addEventListener("DOMContentLoaded", e => {
            
            [...document.getElementsByTagName("video")].forEach(balise_video => {
                    
                    // création de la balise qui affiche les informations de lecture
                    
                    const informations = document.createElement("div");
                    informations["classList"].add("informations");
                    
                    balise_video.insertAdjacentElement("afterend", informations);
                    
                    
                    // stockage de la balise informations associée à la vidéo
                    balise_video["informations"] = informations;
                    
                    
                    // évènement au chargemet de la vidéo
                    balise_video.addEventListener("canplay", afficher_informations);
                    
                    // évènement quand la position de la lecture change
                    balise_video.addEventListener("timeupdate", afficher_informations);
                    
            });
            
            
    });
     
     
    </script>
     
     
    <style>
     
    .conteneur_video
    {
            padding : 1em;
            margin : 1em;
            
            border : 5px solid #5C8;
            border-radius : 1em;
            
            video
            {
                    height : 12em;
            }
            
    }
     
    </style>
     
    </body>
     
    </html>

  13. #13
    Membre confirmé
    Avatar de trx337
    Homme Profil pro
    Intégrateur Web
    Inscrit en
    Décembre 2015
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Intégrateur Web
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Décembre 2015
    Messages : 74
    Billets dans le blog
    1
    Par défaut
    merci pour cette réponse

    pour ma question php , j'ai essayé d'ouvrir une discussion dans le forum , mais ils disent que le forum est fermé .
    peut etre faut il que je fer me cette discussion ci en marquant résolu avant d'ouvrir une autre discussion

    je m'y perd un peu dans ce site .

    merci pour le retour .

  14. #14
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 699
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 699
    Par défaut
    quand vous êtes dans le forum php, vous devez ensuite choisir un sous-forum. je pense que le sous-forum "langage" est celui qui convient le mieux à votre question :
    https://www.developpez.net/forums/f25/php/langage/

    d'ailleurs dans ce forum, il y a 2 discussions récentes aux sujet de l'envoi d'e-mails :
    https://www.developpez.net/forums/d2...r-passer-spam/
    https://www.developpez.net/forums/d2...ion-7-4-8-3-a/

  15. #15
    Membre confirmé
    Avatar de trx337
    Homme Profil pro
    Intégrateur Web
    Inscrit en
    Décembre 2015
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Intégrateur Web
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Décembre 2015
    Messages : 74
    Billets dans le blog
    1
    Par défaut
    merci

    j'ai fait mon message php , grace à toi .

    pour javascript , je suis allé au bout de ce que je cherchais .

    encore merci .

Discussions similaires

  1. Utiliser une variable comme nom de fichier
    Par lo00_ dans le forum MATLAB
    Réponses: 1
    Dernier message: 28/06/2006, 13h57
  2. Réponses: 4
    Dernier message: 19/04/2006, 16h03
  3. donner la valeur d'une variable comme nom de table
    Par cladsam dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 14/10/2005, 15h16
  4. [curseurs] utiliser une variable comme nom de champ
    Par Christian31 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 09/09/2005, 14h12
  5. [XSL] utiliser une variable pour nom d'élément
    Par luta dans le forum XSL/XSLT/XPATH
    Réponses: 13
    Dernier message: 07/09/2004, 13h58

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