Page précédente | Page suivante | Page : 1 2

Afficher/cacher du texte entre deux balises
Zingwai Hors ligne

Inscrit le 30/07/2007

Posté le 30/08/2007 à 17:43 Retour en haut de la page

Bonjour.

Je suis en train de créer mon BBcode lorsque j'arrive à la balise "secret".
Cette balise a pour but de cacher le texte se trouvant à l'intérieur de celles-ci.

C'est à dire que lorsqu'on charge la page le texte entre ces deux balises devrait être caché.

En cliquant sur la zone cachée le texte devrait apparaître et en recliquant dessus disparaitre...

Seulement, avec mes codes le texte par défaut s'affiche et lorsqu'on clique dessus le texte disparait et impossible de le faire réapparaitre (sauf en réactualisant la page).

Je vous présente mes codes et dites moi si j'ai fait des erreurs :

Ma regex
$texte = preg_replace('#&lt;secret&gt;(.+)&lt;/secret&gt;#isU','<span class="bbcode_secret">Zone secréte, cliquez pour afficher</span><div class="bbcode_divsecret"><div class="bbcode_texte" onclick="switch_spoiler(this)">$1</div></div>', $texte); 

Ma fonction Javascript
function switch_spoiler(element)
{
     if(element.style.visibility == 'visible')
     {
          element.style.visibility = 'hidden';
     }
     else
     {
          element.style.visibility = 'visible';
     }
}


Ma mise en forme (peu probable que ça vienne de là car la mise en forme est correcte !
.bbcode_secret {font-weight: bold; display: block; margin: auto; width: 90%;}
.bbcode_divsecret
{border: 1px dashed #444; background-color: #FFF; padding: 8px; margin: auto; overflow: auto; width: 90%;}
.bbcode_texte
{width: 100%; height: 100%; }


Merci.

Anthony Fou du volant
Hors ligne

Inscrit le 20/10/2003

Posté le 31/08/2007 à 18:12 Retour en haut de la page

Salut,

dans ta CSS mets un display:none; par défaut pour ton bloc, ensuite en javascript tu remplaces le "style.visibility" par "style.display" à voir si c'est "none" ou "block" et tu affiches en fonction de ça ;)

-----------

Zingwai Hors ligne

Inscrit le 30/07/2007

Posté le 03/09/2007 à 10:07 Retour en haut de la page

J'ai fait quelques modifications comme tu m'as dit mais il n'y a pas d'amélioration.


Ma regex

$texte = preg_replace('#&lt;secret&gt;(.+)&lt;/secret&gt;#isU','<span class="bbcode_secret">Zone secréte, cliquez pour afficher</span><div class="bbcode_divsecret"><div class="bbcode_texte" onclick="switch_spoiler(this)">$1</div></div>', $texte); 

Ma fonction Javascript

function switch_spoiler(element)
{
     if(element.style.display == 'visible')
     {
          element.style.display = 'hidden';
     }
     else
     {
          element.style.display = 'visible';
     }
}


Ma mise en forme

.bbcode_secret {font-weight: bold; display: block; margin: auto; width: 90%;}
.bbcode_divsecret
{border: 1px dashed #444; background-color: #FFF; padding: 8px; margin: auto; overflow: auto; width: 90%; display: block;}
.bbcode_texte
{width: 100%; height: 100%; display: none; }


Le problème est que le texte n'apparait pas même avec display.style.visibility ou display :(
Merci.

Anthony Fou du volant
Hors ligne

Inscrit le 20/10/2003

Posté le 03/09/2007 à 11:14 Retour en haut de la page

Remplace ta fonction javascript par ça :

function switch_spoiler(element)
{
     if(element.style.display == 'block' || element.style.display == '')
     {
          element.style.display = 'none';
     }
     else
     {
          element.style.display = 'block';
     }
}

-----------

Zingwai Hors ligne

Inscrit le 30/07/2007

Posté le 03/09/2007 à 12:03 Retour en haut de la page

Pareil.

C'est l'affichage du texte qui ne fonctionne pas mais comme je suis nul en javascript je ne sais pas comment régler :(

Anthony Fou du volant
Hors ligne

Inscrit le 20/10/2003

Posté le 03/09/2007 à 12:20 Retour en haut de la page

Alors essaie ceci :

$texte = preg_replace('#&lt;secret&gt;(.+)&lt;/secret&gt;#isU','<span class="bbcode_secret">Zone secréte, cliquez pour afficher</span><div class="bbcode_divsecret"><div class="bbcode_texte" id="'.($var = md5(microtime())).'" onclick="switch_spoiler('.$var.')">$1</div></div>', $texte);


function switch_spoiler(id)
{
     var element = document.getElementById(id);
     if(element.style.display == 'block' || element.style.display == '')
     {
          element.style.display = 'none';
     }
     else
     {
          element.style.display = 'block';
     }
}

-----------

Zingwai Hors ligne

Inscrit le 30/07/2007

Posté le 03/09/2007 à 13:15 Retour en haut de la page

Le texte n'apparait toujours pas :s

Anthony Fou du volant
Hors ligne

Inscrit le 20/10/2003

Posté le 03/09/2007 à 13:22 Retour en haut de la page

Quand tu affiches la source de la page générée, tu peux copier le code xhtml comprenant ton bloc secret ici stp ?

-----------

Zingwai Hors ligne

Inscrit le 30/07/2007

Posté le 03/09/2007 à 13:31 Retour en haut de la page

<span class="bbcode_secret">Zone secréte, cliquez pour afficher</span><div class="bbcode_divsecret"><div class="bbcode_texte" id="c0730337a346b1749a7191644da432f7" onclick="switch_spoiler(c0730337a346b1749a7191644da432f7)">Texte d'exemple entouré de balises du BBcode d'Aweh</div></div>

Anthony Fou du volant
Hors ligne

Inscrit le 20/10/2003

Posté le 03/09/2007 à 14:41 Retour en haut de la page

Arf oui ok j'avais oublié deux apostrophes :

$texte = preg_replace('#&lt;secret&gt;(.+)&lt;/secret&gt;#isU','<span class="bbcode_secret">Zone secréte, cliquez pour afficher</span><div class="bbcode_divsecret"><div class="bbcode_texte" id="'.($var = md5(microtime())).'" onclick="switch_spoiler(\''.$var.'\')">$1</div></div>', $texte);

-----------

Page précédente | Page suivante | Page : 1 2

Communauté

Mémoriser :

Inscription gratuite

18 Viconautes connectés

Actions

Sujets similaires

Articles en rapport

Autres rubriques

RSS des derniers messages du forum En direct du forum

Sondage

Vous souhaiteriez plus de contenu dans les rubriques ...

(6 choix possibles)

Aide informatique | Tuto-UnderGround | Astuces Windows | Aide informatique | Forum d'assistance informatique | Forum-Vista | Winland.fr | Formation informatique