Bonjour,
J'utilise un script pour montrer/cacher des divs tout marche bien par contre j'aimerais rendre impossible le fait que deux divs soit ouvert à la fois
Car mes divs caché ou découvert sont contenu dans une boucle php qui génére son contenu à partir de SQL et une partit des elements généré est caché (un simple clic sur une image les découvre et les re-cache)
En plus de sa mes div sont nommé par l'id contenu dans ma bd sql donc il sont tous different, ce qui ne facilite rien ...
Voici mon code javascript avec une fonction DivStatus pour découvrir et DivStatus Off pour caché.
En php j'appelle la fonction DivStatus( nom, numero ) avec cette image elle aussi généré par SQL
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56 function DivStatus( nom, numero ) { var divID = nom + numero; if ( document.getElementById && document.getElementById( divID ) ) // Pour les navigateurs récents { Pdiv = document.getElementById( divID ); PcH = true; } else if ( document.all && document.all[ divID ] ) // Pour les veilles versions { Pdiv = document.all[ divID ]; PcH = true; } else if ( document.layers && document.layers[ divID ] ) // Pour les très veilles versions { Pdiv = document.layers[ divID ]; PcH = true; } else { PcH = false; } if ( PcH ) { Pdiv.className = ( Pdiv.className == 'infoCache' ) ? 'nocache' : 'infoCache'; } } function DivStatusOff( nom, numero ) { var divID = nom + numero; if ( document.getElementById && document.getElementById( divID ) ) // Pour les navigateurs récents { Pdiv = document.getElementById( divID ); PcH = true; } else if ( document.all && document.all[ divID ] ) // Pour les veilles versions { Pdiv = document.all[ divID ]; PcH = true; } else if ( document.layers && document.layers[ divID ] ) // Pour les très veilles versions { Pdiv = document.layers[ divID ]; PcH = true; } else { PcH = false; } if ( PcH ) { Pdiv.className = ( Pdiv.className == 'nocache' ) ? 'infoCache' : 'nocache'; } }
L'id est un code uniqid créer en php.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 <img src="contrib/<?php echo $donnees['fichier']; ?>" class="affiche" onclick="DivStatus( 'info', '<?php echo $donnees['id']; ?>' )" >
J'ai essayé de me débrouillé avec Onblur mais sa ne marche pas.
Pour résumé il faudrait que quand l'on clique sur une autre image qui n'a donc plus la même id, toutes les div ou la div ouverte (peu importe sa revient au même) soit fermé avant d'en ouvrir une autre.
PS: J'ai dans mon tutoriel ou j'ai apprit à ouvrir et fermer des div une fonction
qui permet de tout cacher (ci-dessous) seulement elle prend le prefixe et le numéro du div seulement moi j'ai remplacé ce numéro par un id unique ce qui rend je pensse inutile cette fonction qui m'aurait aidé.
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41 function CacheTout( nom ) { var NumDiv = 1; if ( document.getElementById ) // Pour les navigateurs récents { while ( document.getElementById( nom + NumDiv) ) { SetDiv = document.getElementById( nom + NumDiv ); if ( SetDiv && SetDiv.className == 'infoCache' ) { DivStatus( nom, NumDiv ); } NumDiv++; } } else if ( document.all ) // Pour les veilles versions { while ( document.all[ nom + NumDiv ] ) { SetDiv = document.all[ nom + NumDiv ]; if ( SetDiv && SetDiv.className != 'infoCache' ) { DivStatus( nom, NumDiv ); } NumDiv++; } } else if ( document.layers ) // Pour les très veilles versions { while ( document.layers[ nom + NumDiv ] ) { SetDiv = document.layers[ nom + NumDiv ]; if ( SetDiv && SetDiv.className != 'infoCache' ) { DivStatus( nom, NumDiv ); } NumDiv++; } } }
Je pensse que mon pb est trés difficile à comprendre donc n'hésitez pas à me poser des questions
Merci d'avance pour votre aide car la je suis vraiment bloqué
Partager