Compter des getElementById - HTML/CSS - Programmation
Marsh Posté le 22-02-2006 à 16:24:46
Oui, je pense qu'il est possible de compter les éléments d'un objet, avec objet.elements.length. Je l'ai déjà fait pour les éléments d'un formulaire (avec le bout de code ci-dessous), et je pense que cela devrait être à peu près la même chose pour les élément d'une page entière.
form_obj = document.getElementById(form_name); |
Marsh Posté le 23-02-2006 à 09:17:38
j'ai essayer de faire un getElementById sur la page mais ça ne marche pas, j'ai essayer sans passer de parametre.
J'ai rechercher sur différent site et d'aprés ce que j'ai vue ça ne fonctionne qu'avec des formulaires.
Y a t'il moyen de compter les element par id dans une page html sinon comment faire ??
Marsh Posté le 23-02-2006 à 09:32:12
Je ne crois pas qu'il y ait un moyen de récupérer tous les éléments d'une page de façon propre (c'est à dire sans utiliser document.all).
Sans voir ton code Html, c'est dur d'imaginer une solution mais j'imagine que tous tes éléments "ligne_*" ont le même tag (<p>, <div> ou équivalent). si c'est le cas, tu peux utiliser document.getElementsByTag() pour récupérer un tableau contenant tous les éléments d'un type donné, ensuite il ne te reste plus qu'à parcourir les éléments du tableau et extraire ceux dont le nom commence par "ligne_"
ex :
Code :
|
Marsh Posté le 23-02-2006 à 10:00:51
mesDiv = document.getElementsByTagName("div" );
et
(mesDiv[i].id.indexOf("ligne_" )!=-1)
Marsh Posté le 23-02-2006 à 10:28:00
ok ça fonctionne, mais maintenant ça bug au niveau de l'affichage
voici mon code pour l'instant
Code :
|
chaque ligne à un id, à chaque fois que je redescend d'un niveau, mon id reprend _key
(le nom des niveau ne correspond pas du tout à ce qui suit, ce sont des groupe de travail et sous groupe, j'ai mis ceci pour simplifier, la seul chose qui reste est le '_'
exemple
ligne_niv1a
ligne_niv1a_niv2a
ligne_niv1a_niv2a_niv3a
ligne_niv1a_niv2a_niv3a_niv4a
ligne_niv1a_niv2a_niv3b
ligne_niv1a_niv2b
ligne_niv1b
mon but est d'afficher les niveaux juste en dessous donc qui comportent un _ en plus que le niveau supérieur.
comment faire pour recuperer juste un niveau inferieur pour le mettre dans mon getElementById à la place du "ligne_"+cle que j'ai mis
Marsh Posté le 23-02-2006 à 10:43:45
Citation : mesDiv = document.getElementsByTagName("div" ); |
oups ...
Citation : (mesDiv[i].id.indexOf("ligne_" )!=-1) |
dans la pratique ça doit marcher mais :
- s'il a un id = "totoligne_", ça va le prendre aussi (ses id ont l'air cohérents donc pas de problème)
- c'est + lent car ça parcourt tout l'id (et apparemment ses id peuvent être longs) alors qu'avec substring on ne parcourt que 6 caractères
Citation :
|
Ce code veut dire que chaque fois que tu tombes sur un élement commançant par 'ligne_niv1a', tu inverses le display de l'élément de plus haut niveau.
ex : quand tu tombes sur ligne_niv1a_niv2a_niv3a_niv4a, tu inverse le display de ligne_niv1a
Marsh Posté le 23-02-2006 à 11:03:26
Citation : mon but est d'afficher les niveaux juste en dessous donc qui comportent un _ en plus que le niveau supérieur. |
Si le caractère '_' n'apparait pas dans le nom de tes sous groupes, tu peux utiliser la fonction split() et compter le nombre d'éléments du tableau retourné
Code :
|
Marsh Posté le 23-02-2006 à 11:35:33
je viens de faire ceci, le probleme maintenant c'est qu'il ne m'affiche que le 1er element d'un sous niveau meme s'il y en a plusieurs
Code :
|
Marsh Posté le 23-02-2006 à 11:41:02
c'est peut etre bon, j'ai un petit prob d'init des cle niveau php sur la fond de l'arbre.
Marsh Posté le 23-02-2006 à 11:42:46
ca fait crade ta facon de faire nan ?
moi j'aurai plutot vu un genre de liste <ul><li> imbriqués
avec un joli JS DOM :
http://gatsu.ftp.free.fr/html/Exem [...] cence.html
Marsh Posté le 23-02-2006 à 16:06:38
Je suis arrivé au resultat pour agrandir pas de prob mais ensuite pour reduire la galere,
j'ai essayé ta solution Gatsu35, elle me plait bien.
Merci pour votre aide, j'en connais un peu plus en JS ce soir.
Marsh Posté le 23-02-2006 à 18:23:52
ouais mais il est un peu buggué.
C'est fou ça kan mêle, tu fais un truc pour une boite apparament et un gros truc et tu ne ocnnais presque rien en JS.
Bon personne pour me donner du boulot là ?
Marsh Posté le 24-02-2006 à 09:55:44
oui le JS, je connais pas trop,
as tu un lien avec un cour sur le JS qui explique bien les methodes des différents objet, à quoi elles servent.
merci
Marsh Posté le 22-02-2006 à 15:42:05
Bonjour,
je voulais savoir si il était possible de compter des éléments d'une page web afin de faire une boucle pour pouvoir
afficher ou cacher ces elements à l'aide d'une fonction javascript.
chaque element à un id d'attribué et par exemple je voudrais compter (ou recuperer) tout les éléments commençant par "ligne_"
pour ensuite faire une boucle avec ceci à l'intérieur.
Si c'est possible, quelle fonction utiliser ?