Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire : Cours JavaScript, FAQ JavaScript, Toutes les FAQ JavaScript et Sources JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
Vieux 12/03/2010, 11h40   #1
Membre confirmé
 
Avatar de baggie
 
Inscription : octobre 2007
Messages : 663
Détails du profil
Informations personnelles :
Âge : 23
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : octobre 2007
Messages : 663
Points : 222
Points : 222
Par défaut Cacher tous les divs contenus dans un autre div

Bonjour

Dans un div, j'ai une liste d'items.
Toujours dans ce div, j'ai d'autres divs : un pour chaque item, en "display:none".

Quand je clique sur un item, ça affiche le div correspondant.

Comment faire pour cacher tous les autres divs qui pourraient être déja affichés et n'afficher que le div concerné ?

J'ai regardé sur le forum et sur Google, j'ai testé :
Code :
1
2
3
4
5
6
 
function showdiv(name)
{
	document.getElementsByTagName('div').style.display="none";
	document.getElementById(name).style.display="block";
}
mais ça ne fonctionne pas, d'autant plus que j'ai peur de cacher tous les divs de ma page en faisant ça et je ne veux pas.

Résumé de mon code HTML :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
<div id="contenu">
   <div id="blabla">
     <div id="truc">Un autre truc</div>
     <div>
	<h3>Un titre</h3>
	  <ul>
		<li>Un autre titre</li>
	        <ul>
			<li onClick="showdiv('itemun')">Item1</li>
			<li onClick="showdiv('itemdeux')">Item2</li>
		</ul>
           </ul>
       </div>
    </div>
</div>
J'ai lu sur un topic qu'il fallait juste prendre la collection document.getElementsByTagName('div') mais j'avoue que je n'ai pas bien compris

Quelqu'un pourrait-il m'aider ?
baggie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/03/2010, 11h49   #2
Responsable Modération
 
Homme
Inscription : janvier 2007
Messages : 9 037
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : janvier 2007
Messages : 9 037
Points : 14 651
Points : 14 651
Salut
Citation:
Envoyé par baggie Voir le message
J'ai lu sur un topic qu'il fallait juste prendre la collection document.getElementsByTagName('div') mais j'avoue que je n'ai pas bien compris

Qu'est-ce que tu ne comprends pas la dedans ?
document.getElementsByTagName('div') te retourne un tableau d'éléments.
Il suffit de la parcourir ...
Code :
document.getElementById('truc').getElementsByTagName('div')
te sort (sans risque) la liste des div contenus dans "truc" ...

A+
E.Bzz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/03/2010, 11h59   #3
Membre confirmé
 
Avatar de baggie
 
Inscription : octobre 2007
Messages : 663
Détails du profil
Informations personnelles :
Âge : 23
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : octobre 2007
Messages : 663
Points : 222
Points : 222
Merci E.Bzz pour ta réponse.

Ce que je ne comprends pas, c'est quoi écrire exactement pour cacher les divs puisque :

Code :
document.getElementById('elemliste').getElementsByTagName('div').style.display = "none";
ne fonctionne pas, alors que moi ça me paraît on ne peut plus logique

EDIT : un while pour faire un parcours sur chaque div ?

EDIT 2 : j'ai vu que dans mon code au-dessus (premier post) j'avais oublié les div à afficher quand on passe sur l'item correspondant, donc en gros sous le <div> contenant mes item, j'ai tous les autres <div> les uns sous les autres.
baggie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/03/2010, 12h06   #4
Responsable Modération
 
Homme
Inscription : janvier 2007
Messages : 9 037
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : janvier 2007
Messages : 9 037
Points : 14 651
Points : 14 651
Citation:
Envoyé par baggie Voir le message
ne fonctionne pas, alors que moi ça me paraît on ne peut plus logique
Comme quoi, toute logique est relative
Citation:
document.getElementsByTagName('div') te retourne un tableau d'éléments.
Tableau c'est dans le sens Array(), et pas <table>.
Donc pour accéder à un des éléments du tableau, il faut un indice
Code :
document.getElementById('elemliste').getElementsByTagName('div')[i].style.display = "none";
i étant incrémenté par ta boucle (de 0 à document.getElementById('elemliste').getElementsByTagName('div').length).

Sur le principe, il te suffit de tout passer en display="none" dans ta boucle, puis de passer explicitement le display de celui que tu veux afficher (dont tu auras pris soins de passer l'id en paramètre de ta fonction) à "block".

A+
E.Bzz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/03/2010, 12h16   #5
Membre confirmé
 
Avatar de baggie
 
Inscription : octobre 2007
Messages : 663
Détails du profil
Informations personnelles :
Âge : 23
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : octobre 2007
Messages : 663
Points : 222
Points : 222
Merci pour ton aide, ça fonctionne parfaitement !

(suffit juste de bien savoir où placer ses div pour ne pas tous les cacher )
baggie est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +1. Il est actuellement 20h17.


 
 
 
 
Partenaires

Hébergement Web