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 :

Récupérer le rang d'un nœud dans une nodeList


Sujet :

JavaScript

  1. #1
    Membre éclairé
    Homme Profil pro
    Ingénieur en électrotechnique retraité
    Inscrit en
    Décembre 2008
    Messages
    1 579
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur en électrotechnique retraité

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 579
    Points : 804
    Points
    804
    Par défaut Récupérer le rang d'un nœud dans une nodeList
    Bonjour,

    Je ne sais pas si c'est la bonne solution mais dans le code suivant, j'aimerais afficher une liste d'options en utilisant le rang de lists et celui de pens à la ligne 21, un truc du genre lists[pens.rang].classList.remove('hidden'). Je ne sais pas si je me fais bien comprendre.
    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
    20
    21
    22
    23
    24
    25
    26
    "use strict";
     
    const
    	table		= document.querySelector('.displCard table')
    	, lastCols	= table.querySelectorAll('td:last-child:not([colspan])')
    	, lists		= table.querySelectorAll('td:last-child select')
    	, pens		= table.querySelectorAll("img[src*='edit.png']")
    	;
     
    function lastColsOnWindowLoad() {
    	for (let i=0, max=lastCols.length; i<max; i++) {
    		lastCols[i].classList.add('hidden');
    	}
    }
     
    window.onload = function(){
    	lastColsOnWindowLoad();
    }
     
    function handleOnClick() {
     
    }
     
    for (let i=0, max=pens.length; i<max; i++) {
    	pens[i].onclick	= handleOnClick;
    }
    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
    <table>
    	<thead>
    		<tr><th>Prénom</th><th>Nom</th><th>Date de naissance</th><th>Tél. portable</th><th>Tél. travail</th><th>Courriel</th><th></th><th></th><td></td></tr>
    	</thead>
    	<tbody>
    		<tr>
    			<td>Prénom1</td><td>Nom1</td><td>01/11/2011</td><td></td><td></td><td></td><td><img src='images/edit.png' title='Modifier la filiation' data-id='63' /></td><td><a href='parentPage.php?childPageKey=7&id=63' title='Effacer'><img src='images/del.png' /></a></td>
    			<td>
    				<select name='filiation' data-id='63'>
    					<option value='2'>Enfant des deux</option><option value='2'>Enfant du contact</option><option value='3'>Enfant du conjoint</option>
    				</select>
    			</td>
    		</tr>
    		<tr>
    			<td>Prénom2</td><td>Nom2</td><td>07/03/2016</td><td></td><td></td><td></td><td><img src='images/edit.png' title='Modifier la filiation' data-id='64' /></td><td><a href='parentPage.php?childPageKey=7&id=64' title='Effacer'><img src='images/del.png' /></a></td>
    			<td>
    				<select name='filiation' data-id='64'>
    					<option value='2'>Enfant des deux</option><option value='2'>Enfant du contact</option><option value='3'>Enfant du conjoint</option>
    				</select>
    			</td>
    		</tr>
    	</tbody>
    	<tr><td colspan="9" class="center"><input type="submit" value="Nouveau" formaction="parentPage.php?childPageKey=6&relation=9" /></td></tr>
    </table>

  2. #2
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125
    Par défaut


    Normalement, une nodelist obtenue par querySelectorAll doit être transformée en Array avant d'être manipulée (lorsqu'on ne le fait pas explicitement ce sont les méthodes d'optimisation du code du navigateur qui s'en charge).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    arrListes = Array.from(table.querySelectorAll('td:last-child select'));
    Voir : https://developer.mozilla.org/fr/doc...aux/Array/from

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  3. #3
    Membre éclairé
    Homme Profil pro
    Ingénieur en électrotechnique retraité
    Inscrit en
    Décembre 2008
    Messages
    1 579
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur en électrotechnique retraité

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 579
    Points : 804
    Points
    804
    Par défaut
    1-D'après ce que je viens de voir Array.from ne fonctionne pas avec Internet Explorer qui est malheureusement le navigateur le plus utilisé.
    2-ça ne me donne pas le rang (la position, la clef, l'index) dans l'array.

Discussions similaires

  1. [VBA-E]type de donnée range en vba utilisée dans une feuille
    Par Yoyo51 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 30/03/2006, 10h26
  2. Réponses: 2
    Dernier message: 24/03/2006, 09h55
  3. Réponses: 3
    Dernier message: 01/02/2006, 23h17
  4. Récupérer les valeur d'un énuméré dans une string
    Par Oliv_75 dans le forum SL & STL
    Réponses: 5
    Dernier message: 28/09/2005, 00h55
  5. Réponses: 8
    Dernier message: 13/04/2005, 15h40

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