Disparition de div

Eléphanteau du PHP | 14 Messages

03 nov. 2010, 19:08

Re et merci, ta function marche sauf un détaille lorsque je clique pour faire apparaitre une autre div, la précédente ne disparait pas.

Du coup voilà ce que j'ai aujourd'hui :

Code : Tout sélectionner

<!-- window.onload = function () { document.getElementById('tableau1').style.display = "none"; document.getElementById('tableau2').style.display = "none"; document.getElementById('tableau3').style.display = "none"; document.getElementById('tableau4').style.display = "none"; document.getElementById('tableau5').style.display = "none"; document.getElementById('tableau6').style.display = "none"; document.getElementById('tableau7').style.display = "none"; document.getElementById('tableau8').style.display = "none"; document.getElementById('tableau9').style.display = "none"; document.getElementById('tableau10').style.display = "none"; document.getElementById('tableau11').style.display = "none"; document.getElementById('tableau12').style.display = "none"; document.getElementById('tableau13').style.display = "none"; document.getElementById('tableau14').style.display = "none"; } function switchDiv(n) { // Identifiant du bloc à traiter var id = 'tableau' + n; // Récupération du statut courant var sc = document.getElementById(id).style.display; // Définition du nouveau statut var ns = (sc == 'block') ? 'none' : 'block'; // Application du nouveau statut document.getElementById(id).style.display = ns; } -->
Pour l'amélioré encore j'ai tenté :

Code : Tout sélectionner

window.onload = function(){ i = i+1; var id = 'tableau' + i; document.getElementById(id).style.display = "none"; }


Mais ca marche pas. lool c'est le début du js pour moi hein je trifouille

Mammouth du PHP | 19672 Messages

03 nov. 2010, 19:36

Ben oui mais regarde ton code attentivement :
window.onload = function()
{
    i = i+1;
    var id = 'tableau' + i;
    document.getElementById(id).style.display = "none";
}
Ta variable i n'est jamais initialisée, ce qui revient à faire i = null + 1, ce qui n'a pas de sens. Et du coup les lignes suivantes n'ont pas davantage de sens et rien ne se passe.

L'idée est là, mais il te manque une boucle avec une valeur de départ et une valeur limite. Que ce soit du JS, du PHP ou n'importe quel langage, le principe reste strictement le même. Je te laisse un peu méditer là dessus, continue sur cette lancée.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 14 Messages

03 nov. 2010, 19:56

Ouh OUh (le ou ou de homer simpson)

Code : Tout sélectionner

window.onload = function() { for(var i=1; i<32; i++) { var id = 'tableau' + i; document.getElementById(id).style.display = "none"; } }
ça marche ! Merki

Par contre au niveau de faire disparaitre les div à l'apparition d'un autre avec ton new code tu peut m'aiguillé stp ?

ps : oui je sait 32 tableau à faire et j'en suis qu'au 14em... pfffiou

Mammouth du PHP | 19672 Messages

03 nov. 2010, 20:00

Ben voilà, je ne suis pas amateur des Simpsons, mais ton code est correct. Il te reste plus qu'à marquer le sujet comme résolu (En haut à droite de la réponse qui a résolu la question)
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 14 Messages

03 nov. 2010, 20:07

ça fais quelques jours qu'il est résolu :D
par tes soins bien sur.

Par contre ton nouveau code ne permet pas le switch entre deux div une fois qu'une div est afficher je ne peut la faire disparaitre qu'en cliquant sur son propre bouton, comment puis-je procédé pour quel disparaisse aussi si je clic sur une autre ?

ViPHP
ViPHP | 3607 Messages

03 nov. 2010, 20:23

function hideAllDivs(){
   for(var i=1; i<32; i++)
   {
      var id = 'tableau' + i;
      document.getElementById(id).style.display = "none";
   }

}

function switchDiv(n)
{
    // Identifiant du bloc à traiter
    var id = 'tableau' + n;
    // Récupération du statut courant
    var sc = document.getElementById(id).style.display;
    // Définition du nouveau statut
    var ns = (sc == 'block') ? 'none' : 'block';
    // on cache tout
    hideAllDivs();
    // Application du nouveau statut
    document.getElementById(id).style.display = ns;
}

window.onload = function()
{
hideAllDivs();
}
Pas testé mais sur le principe ça devrait le faire ;)

Eléphanteau du PHP | 14 Messages

15 nov. 2010, 18:43

Merci jojo,

mais forcément si je cache tout je cache aussi la div sélectionné donc ça ne marche pas...

Eléphanteau du PHP | 14 Messages

15 nov. 2010, 19:22

Voila ce que j'ai trouver :

Code : Tout sélectionner

window.onload = function() { for(var i=1; i<32; i++) { var id = 'tableau' + i; document.getElementById(id).style.display = "none"; } } function switchDiv(n) { // Identifiant du bloc à traiter var id = 'tableau' + n; // Récupération du statut courant var sc = document.getElementById(id).style.display; // Définition du nouveau statut var ns = (sc == 'block') ? 'none' : 'block'; //on cache tout sauf le séléctioné for(var i=1; i<32; i++) { var id2 = 'tableau' + i; if (id != id2) document.getElementById(id2).style.display = "none"; document.getElementById(id).style.display = ns; } }
Si vous trouver quelques chose de mieux ou à simplifié n'hésitez pas :D ++

Eléphant du PHP | 447 Messages

26 nov. 2010, 23:31

Je voulais juste signaler la pseudo classe css :target, qui permet de s'affranchir de javascript, mais n'est hélas pas prise en charge par quelques navigateurs...

Ex.:
<style type="text/css">
#zeudiv {
    display: none;
}
#zeudiv:target { display: block; }
</style>
<p><a href="#zeudiv" title="Afficher zeu div masqué">Target c'est sympa</a></p>
Probably (only a) Human Problem?