PDA

Voir la version complète : [Bloqué dans l'affichage d'un code] Show Hide :


Wize
07/05/2007, 13h00
Slt, j'ai un soucis avec un script qui permet d'afficher simplement un bouton qui permet lorsqu'on le clic de faire apparaitre un texte sélectionner... malheureusement je ne sais pas du tout ou le placer... (j'aimerais qu'il soit afficher dans le forumhome).

Voici le code du script:
<script>

var g_nExpando=0;
function putItemInState(n,bState)
{
var oItem,oGif;
eval('oItem=document.all.descr'+n);
eval('oGif=document.all.expandoGif'+n);

if (bState=='toggle')
bState=(oItem.style.display=='block');

if(bState)
{
bState=(oItem.style.display='none');
bState=(oGif.src='http://snowtigers.net/images/cross.gif');
}
else
{
bState=(oItem.style.display='block');
bState=(oGif.src='http://snowtigers.net/images/noncross.gif');
}
}


function expand(nItem)
{
putItemInState(nItem,'toggle');
}


function expandAll()
{
if (!g_nExpando)
{
document.all.chkFlag.checked=false;
return;
}
var bState=!document.all.chkFlag.checked;
for(var i=0; i<g_nExpando; i++)
putItemInState(i,bState);
}

</script>

Et voici le code a placer en html... qui récupére les données inscrites dans le code:
<img border=0 src=images/cross.gif id=expandoGif64 onclick="expand(64)" alt="show/hide">&nbsp;<b><font size=2><img src=images/clignbleu.gif border=0>&nbsp;Rappel à tous les membres</b></font> (07-05-2007)
</td></tr><tr><td><div id="descr64" style="margin-left: 23px; display:none"><br>Ne confondez pas le forum avec votre portable !! Il serait sympathique pour les différents membre du forum que vous écriviez correctement afin de mieux vous comprendre... merci de ne pas écrire en langage sms<br><br>

Voilà donc j'aimerais savoir où je dois placer le <script> alors que le reste (html) va ètre placé au dessus des forums ;)

Merci beaucoup d'avance :)

Allan
07/05/2007, 14h13
Il me semble que nous avons un ou deux BBcode qui réalise la même chose grosso modo, non ?

Wize
07/05/2007, 14h23
Il y a les bbcode:

Spoiler: Le soucis c'est que je ne veux pas afficher un bouton style navigateur, je veux que ca soit une image que j'ai moi meme sélectionner ;)

Cache/Text: mais le soucis c'est lorsqu'on clic sur le lien permettant d'afficher le reste de la phrase la page se raffraichi... hors je ne veux aucuns rafraichissement

Puis ce n'est pas un bbcode que je souhaite avoir mais seulement savoir où placer le <script> pour que celui-ci fonctionne ;)

J'ai tester sur une page html individuelle en placant le <script> entre les head et le reste entre body mais lorsque j'essaye de le faire dansle template forumhome ca ne fonctionne pas :S

Bkdenice
07/05/2007, 20h56
Ben c'est un sistem de Coolspace (le truc pour reduire les fenetre) sa je crois non ?

Wize
07/05/2007, 21h26
Je ne veux pas que ca soit pour une fenètre, une box ou quoi que ce soit mais juste pour que ca permette d'afficher du texte en cliquant sur le bouton sans rafraichir la page :)

MtoR
07/05/2007, 22h23
Si ton texte est récupéré au début, il te suffit de le mettre entre une balise span ou div et de mettre style="display: none;" et avec une id pour la balise.

Ensuite dans ta fontion javascript appelée lors du clic, tu mets : fetch_object('id_de_ta_balise').style.display = '';

Wize
08/05/2007, 10h00
Euh... là c'est hors de mes compétences lol

MtoR
08/05/2007, 10h35
Bah en fait si tu veux dans ton template le texte tu le mets comme cela :


<div id="id_texte" style="display: none;">Ton texte</div>


Puis ensuite tu mets ton lien par exemple:


<a href="#top" nofollow onclick="return afficher_texte();">Afficher le texte</a>


Et tu ajoutes égalemnt la fonciton javascript :


<script type="text/javascript">
function afficher_texte() {
fetch_object('id_texte').style.display = '';
}
</script>


Et voilà :)

Wize
08/05/2007, 11h12
Mmmm c'est justement le code utiliser par un bbcode, je l'ai tester et ca ne me plais pas... c'est le #top qui me géne j'aimerais l'éviter...

Donc en clair moi j'aimerais simplement savoir :) où est-ce que je met le <script> dans le template... ;)

merci ;)

MtoR
08/05/2007, 14h07
a pardon j'ai oublié dans la function apres le fetch_object tu mets return false comme çà le lien #top il fait rien :p

Bah ca dépend dans quel template, si c'est un template normal mets le en dessous de $navbar çà ira très bien

Wize
09/05/2007, 08h06
Mmmmm ca marche toujours pas... le texte s'affiche pas puis le #top n'est pas bloqué...

Bon on va faire dans l'ordre...

<script type="text/javascript">
function afficher_texte() {
fetch_object('id_texte').style.display = '';
}
</script>

Ca je dois le placer ou ? Dans head ou en dessous de navbar? Car dans les deux cas ca ne fonctionne pas...

MtoR
09/05/2007, 10h18
Tu places :


<script type="text/javascript">
function afficher_texte() {
fetch_object('id_texte').style.display = '';
return false;
}
</script>

En dessous du navbar (attention j'ai rajouté le return ;)).

Et ensuite tu mets le texte dans un div ayant pour id='id_texte'.

Wize
09/05/2007, 13h59
Bon bah là ca fonctionne :P merci beaucoup ;)

1° Comment faire pour en avoir plusieurs ? Je pense qu'il suffit de modifier l'id texte... non?

2° J'ai juste un petit soucis... je clique sur "Afficher le texte" le texte s'affiche bien, mais j'aimerais pouvoir recliquersur "Afficher le texte" pour que le texte ne s'affiche plus ;)

Merci bcp ;)

MtoR
09/05/2007, 16h59
Bon alors pour en avoir plusieurs sur la même page on va optimiser et incorporer en plus la modif pour que le reclic fasse disparaître ;)

La fonction devient :

<script type="text/javascript">

function afficher_texte(id) {
if (fetch_object(id).style.display == '')
fetch_object(id).style.display = 'none';
else
fetch_object(id).style.display = '';
return false;
}
</script>


Et ensuite pour chaque lien tu mets :


<a href="#top" nofollow onclick="return afficher_texte('id_texte');">Afficher le texte</a>


Avec id différent pour chaque lien et chaque texte ;)

Wize
09/05/2007, 21h27
Yes c'est good, bah merci à toi Mtor normalement là c'est règler ;)

MtoR
09/05/2007, 22h27
oki c'est cool alors :)