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 :

Accéder à l’index d’un élément d’un tableau


Sujet :

JavaScript

  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2020
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2020
    Messages : 2
    Par défaut Accéder à l’index d’un élément d’un tableau
    Bonjour, comment Récupérer l’indice d’un élément d’un tableau juste en cliquant dessus.

    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
    <h1>test</h1>
      <div id="test">
        <ul id="list">
          <li id="l1"> 
           <a href='#' id='un'> un</a> 
          </li>
          <li id="l2"> 
           <a href='#' id='deux'>Deux</a>
          </li>
          <li id="l3"> 
           <a href='#' id='trois'>trois
           </a>
          </li>
        </ul>
      </div>
     
      <script src="script.js"></script>

    Ici, je veux modifier mon titre «*test*» par l’option qui sera cliqué dans la liste. Je peux créer trois évènements similaires en modifiant le sélecteur. Mais je me suis dis que je pouvais éviter la redondance en créant une variable au niveau du sélecteur... sauf que en utilisant «*getElementsByTagName*» j’ai un tableau donc il me faut l’indice.

    Je sais pas si mon problème est assez bien expliqué...

    Si la réponse est trop évidente, ne m’en voulez pas 🙏🏾 Je suis élève.

  2. #2
    Expert confirmé

    Avatar de -Nikopol-
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2013
    Messages
    2 174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2013
    Messages : 2 174
    Billets dans le blog
    5
    Par défaut
    tu n'as pas besoin de la valeur de l'index meme si tu peux l'avoir aisement dans un forEach. Tu peux recupérer tes "li" via un querySelectorAll (bien mieux que by tag namenotamment si tu as d'autres li sur ta page. Tu obtiens donc une HTMLcollection liElmts par exemple que tu peux boucler avec un forEach. Sur chaque élément tu pourras ainsi ajouter un addEventlistener qui modifiera le titre de ta page.

  3. #3
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2020
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2020
    Messages : 2
    Par défaut
    J’ai essayé ceci...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    a=document.querySelector('#list').querySelectorAll('a');
     
    a.forEach(function (a){
     addEventListener('click',test);
     function test(){
      document.querySelector('h1').innerHTML='<b>' + a + '</b>';}});
    Le résultat que j’ai est le chemin d’accès à la variable non son contenu

  4. #4
    Expert confirmé

    Avatar de -Nikopol-
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2013
    Messages
    2 174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2013
    Messages : 2 174
    Billets dans le blog
    5
    Par défaut
    Tu n'etais pas loin, quelques remarques : querySelector et querySelectorAll s'utilisent avec n'importe quel selecteur css, donc pas besoin de les chainer.
    let a=document.querySelector('#list a'); (ne pas oublier le "let".)
    L'usage veux qu'on mette le nom du tableau au pluriel (plusieurs éléments) et chaque élément du forEach au singulier : aElmts.forEach(function(aElmt){...}Le addEventListener doit s'appliquer à un élément, c'est ca l'erreur commise ici. Tu peux soit déclarer les instructions dedans ou alors dans une fonction comme tu l'as fait mais il est preférable de mettre cette fonction hors du forEach.
    document.querySelector('h1').innerHTML='<b>' + a + '</b>';} là tu affiches l'élément a, il faudra utiliser textContent par exemple pour récupérer le texte. Et pour finir innerHTML est à eviter, lui préférer insertAdjacentHTML.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
            let title = document.querySelector('#title-page');
            let liEltmts = document.querySelectorAll('ul#list li');
            liEltmts.forEach((li,idx,array)=>{
                console.log(idx)
                console.log(array)
                li.addEventListener('click',()=>{
                    title.textContent = li.textContent
                })
            })
    J'ai mis l'index que tu voulais au départ et l'array en console.log, ca peut servir un jour

Discussions similaires

  1. Réponses: 1
    Dernier message: 31/03/2017, 14h32
  2. Réponses: 9
    Dernier message: 12/08/2009, 15h05
  3. Accéder à la page index/jsp. d'une application sous oc4j
    Par ndeyemaroc dans le forum Servlets/JSP
    Réponses: 0
    Dernier message: 16/04/2009, 12h20
  4. Accéder directement à l'index.htm par défaut
    Par nteppe dans le forum Apache
    Réponses: 4
    Dernier message: 23/08/2008, 18h54
  5. Supprimé des éléments vide d'un tableau
    Par shinux2004 dans le forum Langage
    Réponses: 4
    Dernier message: 04/07/2005, 19h40

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