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 :

Liste d'element dans une div


Sujet :

JavaScript

  1. #1
    Membre éclairé Avatar de dragonfly
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    464
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 464
    Par défaut Liste d'element dans une div
    Bonjour à tous,

    Je viens à vous car je voudrias faire quelque chose mais je ne sait pas si cela est possible.

    Je voudrais parcourir l'ensemble des div contenu dans une div et cela de facon automatique, j'ai testé cela qui ne marche pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    var objListe=document.getElementById(this.id);
    		for(var i = 0 , l = objListe.length ; i < l ; i++){
    			if(objListe[i].type=="div" && objListe[i].id.match(idS)){
    				// Action par action
    				if (action=="affiche"){
    					document.getElementById(objListe[i].id).style.display="none";
    				}
    				if (action=="cache"){
    					document.getElementById(objListe[i].id).style.display="block";
    				}
    			}
     
    		}
    J'ai une erreur lors du parcours des éléments qui me dit que l'élement n'est pas défini (l'alerte me raméne "undefined")


    Y'a t-il possiblité de trouver toutes les div contenus dans une autre div (de la même facon que les formulaires).

    Merci d'avance

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 162
    Par défaut
    Il est tout à fait possible de récupérer les div d'un autre div.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    var monDiv = document.getElementById(idMonDiv);
    var listeDivEnfants = monDiv.getElementsByTagName("DIV"); // Récupère la liste des div enfants
    for (var i=0;i<listeDivEnfants.length;i++)
    {
       // Action sur chaque div...
    }
    Ensuite, par rapport à tes erreurs, les variables "action" et "ids" ne sont déclarées nulle part dans le code que tu as collé, mais je ne pense pas que ce soit la source de ton pb.
    Par contre, je pense que "objListe[i].type" remonte une erreur, si tu veux tester le type de "noeud", utilise l'attribut "tagName".

    De plus, ta ligne "document.getElementById(objListe[i].id)" dans ta boucle est inutile, tu peux accéder directement à l'élément par "objListe[i]", de cette façon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    objListe[i].style.display="none"; // ou block
    A+

  3. #3
    Membre éclairé Avatar de dragonfly
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    464
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 464
    Par défaut
    Autant pour moi, la fonction compléte est la suivante:

    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
     
    	// Fonction permettant de faire une action sur un groupe d'objet contenu dans un autre objet
    	// Paramétres
    	// typeS => Type des objets secondaire
    	// idS => Id des objets secondaires (partie distinctive)
    	// action => Action à réaliser
    	this.actionGroupe = function(typeS, idS, action){
    		var objListe=document.getElementById(this.id);
    		for(var i = 0 , l = objListe.length ; i < l ; i++){
    			if(objListe[i].type==typeS && objListe[i].id.match(idS)){
    				// Action par action
    				if (action=="affiche"){
    					document.getElementById(objListe[i].id).style.display="none";
    				}
    				if (action=="cache"){
    					document.getElementById(objListe[i].id).style.display="block";
    				}
    			}
     
    		}
    Je vais essayer ta solution

  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 : 54
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Salut.

    Il semble que tu commettes une grosse erreur conceptuelle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var objListe=document.getElementById(this.id);
    		for(var i = 0 , l = objListe.length ; i < l ; i++)
    dans la mesure où un id doit être unique dans la page, getElementById renvoie un objet de type HTMLElement, rechercher sa propriété length ne peut t'amener qu'à une erreur !
    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 éclairé Avatar de dragonfly
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    464
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 464
    Par défaut
    BINGO, ca marche.

    Je suis un peu confus alors que la solution parraissait si simple (je ne connaissait pas le "getElementsByTagName")

    Je vous remercie grandement de votre aide, je met la solution si ca peut servir à quelqu'un

    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
     
    	this.actionGroupe = function(typeS, idS, action){
    		var objListe=document.getElementById(this.id);
    		var listeDivEnf = objListe.getElementsByTagName(typeS);
    		for(i = 0; i<listeDivEnf.length ; i++){
    			if(listeDivEnf[i].id.match(idS)){
    				// Action par action
    				if (action=="affiche"){
    					listeDivEnf[i].style.display="none";
    				}
    				if (action=="cache"){
    					listeDivEnf[i].style.display="block";
    				}
    			}
     
    		}
    Encore merci à vous 2 pour votre aide

    P.S : Pour le dernier post, j'ai essayé comme pour la gestion des éléments dans un formulaire en fait.

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

Discussions similaires

  1. [langage] Supprimer un élément dans une liste
    Par myjuna dans le forum Langage
    Réponses: 15
    Dernier message: 06/08/2014, 11h49
  2. Recherche sur 2 elements dans une liste box.
    Par molarisapa dans le forum Access
    Réponses: 2
    Dernier message: 29/05/2006, 18h43
  3. occurences d'un element dans une liste (algorithme)
    Par kespy13 dans le forum Algorithmes et structures de données
    Réponses: 25
    Dernier message: 16/02/2006, 00h18
  4. Recherche Element dans une liste
    Par hellodelu dans le forum ASP
    Réponses: 7
    Dernier message: 19/08/2005, 10h56

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