L'éditeur JavaScript
Visiteur non-identifié | Identifiez-vous | Devenir membre
Code perdu ? | Combien de visiteurs sur votre site ?
Rechercher :
Page d'accueil
     Home Page

JavaScript
     Tous les scripts
     Proposer un script
     Recherche de script
     AJAX
     Cours de JavaScript
     Liste de discussion
     Forums

Services :
     CountUs
     myCircle

Trucs et astuces :
     HTML / CSS
     PHP / MySQL
     Réferencement
     Graph / Présentation
     Toutes les astuces
     Ajouter un article

MailingList :
106696 abonnés

Annuaire webmaster :      Hebergement web
     Referencement
     Sites webmasters
     XHTML - CSS2
     PHP
     Affiliation - Pub
     FAI

     Annuaire webmaster

Ressources pour webmasters :
     Kits graphiques

     Foire aux questions
     Les membres
     Devenir annonceur
     Faire un lien
     Contact

Partenaire :
     Compteur live
     Referencement
     Le PHP facile
     Activeartanima...
     L'écriteau
     Faro-dessing
     Le village de ...
     Gifs animés, f...
     Trucs et astuc...
     Electroniq...
     K i s s design
     Les kits graph...
     Easy-script.com
     Les autres
     Votre site ici ?


Montrer/Cacher des blocs DIV

Script posté par :

KevBrok
Vous aussi, postez vos scripts en cliquant ici.


Description

Ce script va vous permettre de montrer/cacher des blocs lors d'un clique, d'un survol etc... Il y a aussi une fonction qui ouvre tous les divs, un autre qui les ferment tous, et finalement, une qui les inverse (Ouvre ceux qui sont fermés, ferme ceux qui sont ouverts)

Il faut créer des divs avec l'attribut id et name (Name n'est pas oubligatoire mais il permet au script d'être compactible avec les vieux navigateurs) suivit d'un numéro (préfixe + numéro). Ce principe sert aux fonctions qui ouvre/ferme/inverse tous les div( change tous les divs ayant ce préfixe ). par exemple: mondiv1, mondiv2, mondiv3 ....


Compatibilité :

 FireFox : Toutes versions
 Mozilla : 1 et +
 Netscape Navigator : 4 et +
 Internet Explorer : 4 et +
Ce script utilise le DHTML


Chiffres :

Date de création : 4/08/2004
Dernière modif : -
Visites de la page : 62416
Envois par mail : 1093


Exemple :

- Ouvrir/Fermer le Bloc 1
- Ouvrir/Fermer le Bloc 2
- Ouvrir/Fermer le Bloc 3
- Ouvrir/Fermer le Bloc 4
- Ouvrir tous les Blocs
- Fermer tous les Blocs
- Inverser les Blocs

Bloc 1
Bloc 2
Bloc 3
Bloc 4



Le code :

Entre <HEAD> et </HEAD> :


Entre <BODY> et </BODY> :


Services email :

Je désire recevoir ce script par email
Je désire recevoir un email en cas de modification de ce script
Je désire m'abonner à la newsletter de l'éditeur JavaScript


Les annotations des visiteurs :

De KevBrok - le 20-09-2004
Bon, J'utilise l'annotation pour la réponse à une question que plus de 30 personens m'ont posés... Marre de recevoir de mails :P

Donc, certains me demandais si on pouvais mettre le block caché au départ. Alors Oui c'est possible, il suffi d'ajouter class="cachediv" dans el bloc qui dois être caché au départ...

Voilà ;)
De nunor - le 23-11-2004
bonjour
voila
avec le script dont vous parlez, je n'arrive pas à afficher un champ input dans mon div
Mon div est caché dès le départ et quand je l'affiche, le bloc s'ouvre mais rien dedans
Merci pour votre aide

cela vient de ma feille de style sans doute avec .cachediv

.cachediv {visibility: hidden; overflow: hidden; height: 1px;margin-top: -1px; position: absolute;}


exemple

<fieldset align=center><legend>Gestion des urls&nbsp;</legend>
<a href=\"javascript:DivStatus('mondiv', '3')\">Add</a>&nbsp;&nbsp;/&nbsp;&nbsp;
<a href=\"javascript:DivStatus('mondiv', '4')\">Update</a><br><br>
<div name='mondiv3' id='mondiv3' class='cachediv'><div style='border: 1px solid black; background-color: whitesmoke; margin-bottom: 2px;'>
<form action='' method='GET'>
<input type='hidden' name='action' value='add_date'>
<table border=1><tr><td colspan=2>Ajouter une url...</td></tr>
<tr><td>Url</td><td><input type='text' name='addUrl' value='' size='20' maxlength='255'></td></tr>
<tr><td>Rubrique</td><td><input type='text' name='addNameUrl' value='' size='15' maxlength='255'>&nbsp;<input type='submit' value='ok'></td></tr>
</table>
</form>
</div></div>
</fieldset>
De mozika - le 30-11-2004
Pour integrer un formulaire il suffit de faire :
<form name=mondiv1 id=mondiv1 style="border: 1px solid black; background-color: whitesmoke; margin-bottom: 2px;">
<input type=text>
<input type=submit value=ok>
</form>
testé et aprouvé sous IE 6
De xdeslandes - le 17-12-2004
Excellent script. Je l'ai adapté pour une faq. Cela fonctionne très bien ! Merci KevBrok.
De KevBrok - le 25-12-2004
Sinon pour style, j'aurai voulu éditer le script, pour changer le style...

changez simpleement le style css pour:

.cachediv {
display: none;
}


Et donc là ça va marcher même si on met une bordure au bloc qui va être masqué ;)

Bien entendu, il n'y a pas que les div.... ça fonctionne sur n'importe quel élément...
De pierrax - le 09-02-2005
Ton script est vachement bien mais comment peut on faire pour que lorsque j'affiche un block est autres se cachent.

Merci de vos réponses
De bgietz - le 23-02-2005
il faudrait pouvoir faire un "CacheTout" puis "DivStatus" du div qui va bien.
Mais je n'ai aucune idée de comment mettre 2 fonctions javascript dans un même lien HREF ?????

quelqu'un a la réponse?
De cornetto - le 26-02-2005
<a href="#" onclick="javascript:alert('Première Alerte');alert('Seconde Alerte')">Le Lien</a>

;)
De elodie7ms - le 27-02-2005
Merci bcp pour ce scrip qui est génial !
Je voudrais avoir une précision...
Le "bloc" que je souhaite afficher ou cacher est un texte compris dans plusieurs cellules d'un tableau.
Comment faire ?
Merci d'avance.
De elodie7ms - le 10-03-2005
Autre question : comment faire pour que les blocs s'affichent et se cachent au simple passage de la souris, sans cliquer ?
Merci.
De KevBrok - le 04-07-2005
"Le "bloc" que je souhaite afficher ou cacher est un texte compris dans plusieurs cellules d'un tableau.
Comment faire ?"

Ne pas utiliser les tableaux :D

Sinon ça peux marcher si c'est une ligne, tu met un identifiant au <tr>.



"Autre question : comment faire pour que les blocs s'affichent et se cachent au simple passage de la souris, sans cliquer ?"

tu ajoutes dans la balise désirée: onclick="DivStatus('blabla',1)" pas exemple.

Voilà, réponses aux questions :D
De yarchmon - le 13-07-2005
Bonjour,
Ce code est exactement ce que je cherchais pour mon site, Merci !
Je rebondis sur la dernière question (et la dernière réponse...) : comment faire pour mettre un identifiant sur la balise <tr> ? J'ai bien essayé, mais je dois me planter quelque part...
De Farfadam - le 22-07-2005
Bonjour, j'ai un petit problème...
j'ai mis un tableau dans un de mes div mais celui-ci ne s'affiche pas dans internet explorer (dans firefox sa marche impec), il me met juste un cadre de la grandeur de mon tableau sans rien dedans...

D'avance merci pour votre aide
De bizzz - le 28-07-2005
bravo pour le srcipt

j'ai une question comment fait-on pour que les liens "ouvrir/fermer le bloc" ne soit pas souligner.d'avance merci
De darkevil - le 10-10-2005
Salut, même problème, pas d'affichage (sauf du bloc, mais vide) dans IE. Quelqu'un a une idée ?
De Jerem23.02 - le 06-12-2005
Merci beaucoup pour ta dernière et assez vive réaction ... ;)

Cette technique est très bien, mais présente un désavantage : si l'utilisateur n'a pas activé Javascript, les divs sont cachés ... Ne peut-on pas mettre cette instruction dans le code du HEAD (une ligne du style onload.CacherTout (je ne connais RIEN en Javascript)) pour que les divs se cachent bien en cas de Javascript activé, mais soient affiché si le Javascript est désactivé ...

Désolé de te déranger à nouveau ! En espérant que tu aies une solution ... ;)
@++ et merci pour ton script !
De Shuya - le 01-01-2007
Bonjour alors j'ai utiliser le script ( il est genial ) et j'ai vu que sa s'ouvrer des le depart alors je me suis dit je vais voir les commentaires pour voir si quelq'un a deja poser cete questions oui je vois qu'il faut faire class="cachediv" dans le div du block a cacher au depart le block et cacher certes mais qaund je clique sur ouvrir le block 1 rien ne se passe ou ai-je fait une erruer?
De arnaudperfect - le 29-01-2007
Salut,

Très bon script, mais toujours le problème avec des tableaux sous IE qui ne fonctionne pas.

Auriez vous une solution, un exemple ?

Merci d'avance.

Arno
De ploko - le 13-02-2007
Excellent script, un peu comme "plus d'infos", sauf qu'ici on peut en mettre plusieurs et facilement ! Seul petit hic : le script est assez long...
De dodo18 - le 11-04-2007
Bonjour, Ce scripte correspondait exactement a mes attentes mes voilà il y a un hic: Mes blocs sont sencés ne pas etre visible au depart, donc j'utilise class=cachediv mais lors du clic le contenu n'est pas visible....

qlq'1 c'est pourquoi ?
De Mars - le 22-01-2008
Salut, très bon le script.

Dans un premier temps, je l'ai utilisé sur un page tapée "en dur" sans ausun problème, j'ai remplaçé les liens pour montrertout, cacher tout et inverse par des images avec un roll over pas de problème.

ensiute, j'ai voulu utiliser le script en question pour un menu généré dynamiquement (je me mets à SPIP depuis très peu) aucun problème pour les liens qui plient/déplient un div en particulier, leur numero apres 'mondiv' est récupéré dansla base de données, mais les tris derniers qui agissent sur tous en même temps ne sont plus actifs.

quelqu'un a une idée ?
De Axeldark - le 19-02-2008
Pour ceux ayant un problème d'affichage des tableaux sous IE, cela vient du css.

Il suffit de remplacer
visibility: hidden; overflow: hidden;

par
display:none;


Le problème vient de visibility qui a l'air de mal être interprété par IE.

Pour info, cela marche avec ma modification sur IE7 et Firefox 2.0.0.12.
De fluxaa - le 03-03-2008
Bonjour,
merci de ce script très pratique à utiliser.
Pour compliquer un peu la sauce, j'aimerais l'utiliser pour masquer les détails d'événements dans un agenda. Un clic sur le titre de l'événement et on affiche le détail, un nouveau clic et on le masque.
J'affiche 5 événements, mais je n'arrive pas à indiquer à la fonction javascript qu'il n'y a pas qu'un seul détail à afficher mais 1 détail lié à chaque événement... J'ai enlevé la mention du nombre, mais c'est pas encore ça...

Voici mon code, si quelqu'un de plus calé que moi (pas dur...) pouvait avoir une chouette idée ?
Merci !

<a class="agendaev" href="javascript:DivStatus( 'detail', '' )"><? print($EVTITLE); ?></a></p>
<div name="detail" id="detail" class="cachediv"><? print($EVDESCRIPTION); ?></div>


De fluxaa - le 04-03-2008
C'est bon j'ai trouvé !

Je poste le résultat au cas où d'autres seraient intéressés : il manquait, dans mon code, le renseignement du "num", qu'il fallait tirer directement de la bdd avec la variable $i.

Ce qui fait donc :
<div name="detail<? print($i);?>" id="detail<? print($i);?>"


Pas si compliqué en fait... ;)
De fluxaa - le 04-03-2008
C'est bon j'ai trouvé !

Je poste le résultat au cas où d'autres seraient intéressés : il manquait, dans mon code, le renseignement du "num", qu'il fallait tirer directement de la bdd avec la variable $i.

Ce qui fait donc :
<a href="javascript:DivStatus( 'detail', '<? print($i);?>' )"><? print($EVTITLE); ?></a>
<div name="detail<? print($i);?>" id="detail<? print($i);?>" class="cachediv"><? print($EVDESCRIPTION); ?></div>


Pas si compliqué en fait... ;)
De Emylou - le 24-07-2008
Bonjour!

Je viens de teste ce script, tout va bien, sauf que j'ai un compteur de clic à rajouter sur le lien et je ne sais pas comment.
(C'est pour informer les clients du nombre de personnes qui ont cliqués sur "afficher les coordonnées complètes")

J'ai mis le code sur la page, et j'ai tenté de placer ça :
<a href="javascript:DivStatus( 'mondiv', '1' )" onclick="executeScript('<?php $fp = fopen ('compt-coordonnees.txt', 'r+'); $nb_visites = fgets ($fp, 200); $nb_visites = $nb_visites + 1; fseek ($fp, 0); fputs ($fp, $nb_visites); fclose ($fp); ?>')">Ouvrir/Fermer le Bloc 1</a><br>



ça marche, mais le clic est rajouté lors du chargement de la page et pas au moment du clic!

Je sais que je demande des connaissances en javascript autant que php, mais ça devient urgent!!!!! :-s


Merci d'avance pour votre aide.
De vince_30 - le 28-07-2008
Bonjour

Je souhaiteari savoir comment faire pour des qu'on ouvre un bloc cela ferme les autres de façon à n'avoir qu'un seul bloc d'ouvert à la fois

Merci
De taranalex - le 11-12-2008
Bonjour à tous,

Merci pour ce super script qui me rend bien service. Il cache et montre un formulaire "recommander à un ami".

Le problème, c'est que je souhaiterais qu'il soit caché quand la page s'ouvre, et non pas ouvert par défaut.

<a href="javascript:DivStatus( 'mondiv', '1' )">Fermer | Ouvrir &quot;recommander &agrave; un ami&quot;.</a><br />
<div name="mondiv1" id="mondiv1"><div style="border: 0px solid black; margin-bottom: 0px;"><?php if ( is_tellafriend( $post->ID ) ) insert_cform(8); ?></div></div>
.

Quelqu'un aurait il la solution pour régler ce tout petit problème?

Votre site est chouette, je le découvre. Bravo pour cette réalisation.

Alex

>> Poster une annotation sur ce script






11 visiteurs
actuellement en ligne

    PUBLICITE



     ANNUAIRE WEBMAST.
Wipub
Plateforme d'affiliation. Beaucoup de petits programmes qui peuvent etre interessants.
http://www.wipub.com/
Cat : Affiliation - publicité
Voir l'annuaire webmaster


     LES SCRIPTS :
78 à éditer
68 à copier/coller
247 des membres
2580 sur le web
>> Tous les scripts

     LES MEMBRES :
56144 membres
8361 comptes CountUs
1541 comptes myCircle

     LES FORUMS :
14 forums
39398 topics
189318 messages
>> Les forums

    SONDAGE

Vous avez un blog ou site classique ?
Un blog
Un site classique
Les deux !
La mini-astuce "Divers" du jour par alex55
Vous connaissez les Easter Eggs ? Ce sont de petits codes insérés dans les logiciels qui s'ouvrent en faisant une action particulière : dans Winamp, pendant la lecture d'une musique, tapez N U L [echap] L [echap] S O F T. Le lecteur deviendra transparent en rythme avec la musique !!!
Proposer votre mini-astuce | Archives des mini-astuces
© 1999-2009 EJS - Tous droits réservés | CNIL N° 844440 | 10/01/2009 04:54:56 | Design by Studcrea | Gen. en 0.49 sec.