Problème d'affection de propriété CSS en JS

Fermé
Hadri22 - 14 sept. 2009 à 19:57
zoubiock Messages postés 57 Date d'inscription mardi 12 mai 2009 Statut Membre Dernière intervention 2 mars 2010 - 15 sept. 2009 à 11:02
Bonjour,
J'ai un petit problème. J'ai ne page php avec un div tout bête. Sur ce div, il y a un bouton, qui fait appel à la fonction "reduire". Cette fonction "cache" mon div en l'envoyant à environ 1000px en dessous de sa position normale, ce qui, normalement, suffit à le rendre invisible aux yeux de tout le monde. Cette fonction "reduire" créé aussi un autre bouton, situé plus loin dans la page, qui fait appel à la fonction "afficher", qui doit "détruire" le bouton créé par "reduire" et replacer le premier div à sa position initiale. Voici ces deux fonctions :

function reduire(fenetre)
{
fenetre.style.top = '999px';

color = document.createElement("div");
color.id = 'launcheritem';

color.innerHTML = '<div class="item" style="float:left;"><button class="window-max" onclick="afficher()"></button></div>';

document.getElementById("launcher").appendChild(color);

}

<!--
function afficher(fenetre)
{
fenetre.style.bottom = '2px';

document.getElementById("launcher").appendChild(color).style.visibility = 'hidden';
}
-->

Seulement voila, si la fonction "reduire" marche très bien, la fonction "afficher" bugge un peu.. La fonction qui détruit mon bouton (ici nommé color), marche bien. Mais impossible de replacer le div de départ à sa place!!! Auriez vous une solution?

1 réponse

zoubiock Messages postés 57 Date d'inscription mardi 12 mai 2009 Statut Membre Dernière intervention 2 mars 2010 10
15 sept. 2009 à 11:02
Salut Hadri22

Mais pourquoi tant de difficulté?
Tu peux positionner tes deux div, l'une en dessous de l'autre et mettre dans la css pour ta seconde div la propriété display:none;

Ensuite, tes fonctions js inversent ces propriétés:
function reduire(fenetre)
{
document.getElementById("div1").style.display = "none";
document.getElementById("div2").style.display = "inline";
}

function afficher(fenetre)
{
document.getElementById("div1").style.display = "inline";
document.getElementById("div2").style.display = "none";
}

Si ça ne fonctionne pas, tu peux aussi utiliser la propriété "visibility"

En tout cas, c'est toujours plus propre que d'envoyer une div 1000px plus bas, non?
Qu'en penses tu?

En espérant avoir aidé !
0