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 :

Arguments de Function


Sujet :

JavaScript

  1. #1
    Candidat au Club
    Homme Profil pro
    Retraité
    Inscrit en
    Février 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Gers (Midi Pyrénées)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Février 2017
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Arguments de Function
    Bonjour à tous,
    après des jours de recherches, j'en appelle à vos compétences et je suppose que pour bon nombre d'entre vous le problème rencontré est simple à résoudre.

    J'ai 1 fonction javascript avec 2 arguments :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
      function affichageLignes(id,NbrLignes) {
        var i;
         var id;
         for (i = 1; i <= NbrLignes; i++) {
            if (document.getElementById(id,"Ligne" + i).style.display == 'none') {
              document.getElementById(id,"Ligne" + i).style.display = 'block';
            } else {
              document.getElementById(id,"Ligne" + i).style.display = 'none';
            }
          }
        }
    Si j'enlève l'argument (id) l'exécution de cette fonction ne pose aucun souci.
    J'ai essayé toutes les syntaxes que j'ai pu trouver entre (id) et ("Ligne" + i) dans document.getElementById(id,i), mais je sèche complètement.

    Merci d'avance pour votre aide.

  2. #2
    Expert confirmé Avatar de psychadelic
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    2 529
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 2 529
    Points : 4 740
    Points
    4 740
    Par défaut
    Bon, alors tout d'abord la fonction getElementById n'utilise qu'un seul argument => https://developer.mozilla.org/fr/doc...getElementById

    donc il n'y a aucune raison d'utiliser un id qui ne viens de nulle part.

    Ensuite tu déclares une nouvelle fois cet id, ce qui à pour effet d'annuler celui qui est placé en argument de ta fonction : La déclaration d'une fonction vaut aussi pour les arguments de celle-ci.

    à la base une déclaration de fonction se fait ainsi : var affichageLignes = function ( id, NbrLignes ) { ...Bien sur, habituellement on rencontre la forme que tu utilise; mais cela ne change rien, cela reste une déclaration de 3 objets : affichageLignes, id et NbrLignes.

    Si par la suite tu déclare une nouvelle variable avec le même nom que celle utilisée dans un argument, alors tu perd l’accès à cette variable.

    à minima ta fonction devrait être écrite de la manière suivante (et optimisé) :

    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function affichageLignes( NbrLignes ) {
      for (let i = 1; i <= NbrLignes; i++) {
        let ref_ID_ligne = document.getElementById( "Ligne" + i );
        ref_ID_ligne.style.display =  ( ref_ID_ligne.style.display == 'none' ) ? 'block' :  'none';
      }
    }
    «La pluralité des voix n'est pas une preuve, pour les vérités malaisées à découvrir, tant il est bien plus vraisemblable qu'un homme seul les ait rencontrées que tout un peuple.» [ René Descartes ] - Discours de la méthode

  3. #3
    Candidat au Club
    Homme Profil pro
    Retraité
    Inscrit en
    Février 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Gers (Midi Pyrénées)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Février 2017
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Merci pour ta réponse.

    J'ai modifié ma syntaxe par le modèle que tu m'as envoyé.

    Cette fonction est appelée dans 1 onclick pour ouvrir 2 div :

    (id=C1d) et (NbrLignes=2)

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    onclick="affichageLignes(C1d2);"
    <div id="C1dLigne1"></div>
    <div id="C1dLigne2"></div>

    Malheureusement ces 2 div ne s'ouvrent pas.
    Aurais-je commis une autre erreur de syntaxe ?

  4. #4
    Expert confirmé Avatar de psychadelic
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    2 529
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 2 529
    Points : 4 740
    Points
    4 740
    Par défaut
    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
    <!doctype html>
    <html lang="fr">
    <head>
      <meta charset="UTF-8">
      <title>displays</title>
      <style>
      </style>
    </head>
    <body>
     
      <button onclick="affichageLignes('C1dLigne',3);"> bascule affichage Lignes 1 à 3  </button>
      <button onclick="affichageLignes('C1dLigne', 5);"> bascule affichage Lignes 1 à 5  </button>
     
      <div id="C1dLigne1">Ligne 1</div>
      <div id="C1dLigne2">Ligne 2</div>
      <div id="C1dLigne3">Ligne 3</div>
      <div id="C1dLigne4">Ligne 4</div>
      <div id="C1dLigne5">Ligne 5</div>
      <div id="C1dLigne6">Ligne 6</div>
     
      <script>
        function affichageLignes( Prefix, NbrLignes ) {
          for (let i = 1; i <= NbrLignes; i++) {
            let ref_ID_ligne_Style = document.getElementById( Prefix + i ).style;
            ref_ID_ligne_Style.display =  ( ref_ID_ligne_Style.display == 'none' ) ? 'block' :  'none';
          }
        }
      </script>
    </body>
    </html>
    «La pluralité des voix n'est pas une preuve, pour les vérités malaisées à découvrir, tant il est bien plus vraisemblable qu'un homme seul les ait rencontrées que tout un peuple.» [ René Descartes ] - Discours de la méthode

  5. #5
    Candidat au Club
    Homme Profil pro
    Retraité
    Inscrit en
    Février 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Gers (Midi Pyrénées)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Février 2017
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Merci, cela fonctionne maintenant.
    Ta réponse est plus précise que toutes les pages que j'ai pu consulter.

    Ta maîtrise égale inversement mon incompétence.

    Merci pour cette précieuse aide.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Incorrect number of arguments for FUNCTION
    Par Krusty22 dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 24/04/2008, 01h48
  2. Réponses: 9
    Dernier message: 26/07/2007, 16h35
  3. Réponses: 4
    Dernier message: 10/04/2006, 22h30
  4. Réponses: 5
    Dernier message: 10/03/2006, 17h13
  5. arguments function
    Par PerfectSlayer dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 21/12/2004, 21h48

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