begin process at 2012 05 30 03:55:39
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Javascript

 > 

Archives

 > 

AU SECOURS !!!

 > 

script cacher des div + cookie


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

script cacher des div + cookie

mardi 4 octobre 2005 à 09:19:22 | script cacher des div + cookie

SmaybE

Bonjour a tous voila j'ai chercher partout sur le web pour trouver un script pour cacher les div de mon site (comme le script de ce site avec des + et des - sur chaque block qui permet de cacher le contenu de ceux-ci) comme sur l'image ci dessous

voila le milleur code que j'ai trouver:

<script type="text/javascript">
    function DivStatus( nom, numero )
        {
            var divID = nom + numero;
            if ( document.getElementById && document.getElementById( divID ) ) // Pour les navigateurs récents
                {
                    Pdiv = document.getElementById( divID );
                    PcH = true;
                 }
            else if ( document.all && document.all[ divID ] ) // Pour les veilles versions
                {
                    Pdiv = document.all[ divID ];
                    PcH = true;
                }
            else if ( document.layers && document.layers[ divID ] ) // Pour les très veilles versions
                {
                    Pdiv = document.layers[ divID ];
                    PcH = true;
                }
            else
                {
                   
                    PcH = false;
                }
            if ( PcH )
                {
                    Pdiv.className = ( Pdiv.className == 'cachediv' ) ? '' : 'cachediv';
                }
        }
</script>

<a href="javascript:DivStatus('mondiv','<?php echo $block['titre']; ?>')"><b><?php echo $block['titre']; ?></b></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="javascript:DivStatus('mondiv','<?php echo $block['titre']; ?>')">+</a>

<div style="name: mondiv1;" id="mondiv<?php echo $block['titre']; ?>"><?php echo $block['content']; ?></div>

mais comme il ne gere pas les cookies quand on change de page la div réapparais...

alors question: savez vous ou trouver ce genre de script avec cookies ? ou alors ajouter un cookie au code que j'ai montrer ?

merci de vos reponses

mardi 4 octobre 2005 à 19:05:22 | Re : script cacher des div + cookie

coucou747

Administrateur CodeS-SourceS
salut
remplace :

if ( PcH )
                {
                    Pdiv.className = ( Pdiv.className == 'cachediv' ) ? '' : 'cachediv';
                }

par :

if ( PcH )
                {
                    if (Pdiv.className == 'cachediv' ){
                      //retire le cookie
                      Pdiv.className == 'ma_class_css_normale';
                    }else{
                         //envoi le cookie
                        Pdiv.className == 'cachediv';
                    }
                }


il te faut aussi une fonction appelée en onload pour cacher les divs....
In a dream, I saw me, drop dead... U was here, U cried... It was just a deam, if I die, U won't cry, maybe, U'll be happy

[ Lien ]
mercredi 5 octobre 2005 à 00:34:38 | Re : script cacher des div + cookie

SmaybE

alors j 'ai remplacé le bout de code et le scipt ne marche plus je pense donc qu'il faut un fonction onload dans le body de ma page je me suis reseigner sur cette fonction mais je suis incapable de d en faire quelquechose cacher les div
vendredi 7 octobre 2005 à 00:47:31 | Re : script cacher des div + cookie

jesusonline

Membre Club Administrateur CodeS-SourceS
Ce soir je suis genereux :)

Voici un bout de mon framework javascript :)


if (!Object.fireEvent)
    Object.fireEvent = function(obj, eventName, arg)
        {(obj['on' + eventName] || new Function).apply(obj, arg || [])}


var CSLib = {};
CSLib.Web = {};
CSLib.Web.UI = {};
CSLib.Web.Utils = {};

CSLib.Web.Utils.Cookies = {

    // setValue(name, value, seconds, path, domain, secure)
    setValue: function(name, value) {
        var argv = arguments;
        var argc = arguments.length;
       
        if( argc > 2 )
        {
            var cdate   = new Date();
            var expires = new Date(cdate.getTime() + (argv[2]*1000));
        }
        else
        {
            var expires = null;
        }
       
        var path    = (argc > 3) ? argv[3] : null;
        var domain  = (argc > 4) ? argv[4] : null;
        var secure  = (argc > 5) ? argv[5] : false;
       
        document.cookie = name + "=" + escape(value)
            + ((expires == null) ? "" : ("; expires=" + expires))
            + ((path == null) ? "" : ("; path=" + path))
            + ((domain == null) ? "" : ("; domain=" + domain))
            + ((secure == true) ? "; secure" : "");
    },
   
    // getValue(name)
    getValue: function(name) {
        if( document.cookie )
        {
            var arg = name + '=';
            var i   = 0;
           
            while( i < document.cookie.length )
            {
                var j = i + arg.length;
                if( document.cookie.substring(i, j) == arg )
                {
                    var endstr = document.cookie.indexOf(';', j);
                    if( endstr == -1 )
                    {
                        endstr = document.cookie.length;
                    }
                   
                    return unescape(document.cookie.substring(j, endstr));
                }
               
                i = document.cookie.indexOf(' ', i) + 1;
                if( i == 0 ) break;
            }
        }
       
        return null;
    }
}

CSLib.Web.UI.Control = function()
{
    this.fireEvent = function(eventName, arg)
        {return Object.fireEvent(this, eventName, arg)}
}
CSLib.Web.UI.Control.prototype = Element;

CSLib.Web.UI.Container = function(id, opt)
{
    var self = this;
   
    // on etend les options par défaut avec les options passé en paramètre
    //opt = Object.extend(CSLib.Config.Container, opt);
// je vais pas donner tout mon code quand meme :)
    this.options = opt;
   
    this.elmt = $(id);
    this.elmtTitle = self.elmt.childNodes[ 0 ];
    while (self.elmtTitle.nodeType != 1)
        self.elmtTitle = self.elmtTitle.nextSibling;
    this.elmtContent = self.elmtTitle.nextSibling;
    while (self.elmtContent.nodeType != 1)
        self.elmtContent = self.elmtContent.nextSibling;
   
    // Permet de construire le container
    this.render = function()
    {
        // Action pour rendre le container expandable
        if (opt.expandable)
            CSLib.Web.UI.Behavior.Expand.call(this);
    }
   
    self.render();
}

CSLib.Web.UI.Container.prototype = new CSLib.Web.UI.Control();

CSLib.Web.UI.Behavior = {};

//Ne peut etre utilisé seulement dans le contexte d'un Container.
CSLib.Web.UI.Behavior.Expand = function()
{
    // on remet ces variables dans le scope de la fonction, pour qu'elle soit utilisable dans
    // l'event onclick car this se rapportera non plus à la classe en cours mais à l'element en cours
    var elmt = this.elmt;
    var elmtContent = this.elmtContent;
    var elmtTitle = this.elmtTitle;
   
    // Options globales des containers
    var opt = this.options;
    // Options interessante pour l'objet en cours
    var _opt = opt.ExpandOptions;
   
    var img = new Image();
   
    //permet d'inserer le noeud image
    new Insertion.Top(elmtTitle, img);
   
    img.onclick = function()
    {
        _opt.expanded = !_opt.expanded;
        changeImage();
   
        //astuce pour que le click sur l'image soit inactif durant l'effet
        var oldOnclick = this.onclick;
        this.onclick = function(){}
       
        Effect['Blind' + (_opt.expanded ? 'Down': 'Up')]
            (elmtContent,
                Object.extend({
                    scaleMode : 'contents',
                    afterFinish : function()
                        {img.onclick = oldOnclick;}
                 }, _opt.ExpandTransitionOption || {})
            );

        //Enregistrement du cookie
        if (opt.useCookie)
            CSLib.Web.Utils.Cookies.setValue('container' + elmt.id + 'ExpandState', _opt.expanded);
    };       
   
    //fonction servant seulement à changer l'image
    var changeImage = function()
    {
        if (_opt.expanded)
        {
            img.src = adressedetonimage //CSLib.Resources.Image.Expanded;
            img.title = textedetonimage //CSLib.Resources.getText('Close');
        }
        else
        {
            img.src = adressedetonimage //CSLib.Resources.Image.NotExpanded;
            img.title = textedetonimage //CSLib.Resources.getText('Open');
        }
    }
   
    //On charge l'etat à partir du cookie
    if (opt.useCookie && !_opt.forceCookie)
    {
        var val = CSLib.Web.Utils.Cookies.getValue('container' + elmt.id + 'ExpandState');
        if (val != null )
            _opt.expanded = eval(val) ? true : false;
    }
   
    //on cache pour la premiere fois
    if (!_opt.expanded)
        Element.hide(elmtContent);

    //on charge l'image la premiere fois
    changeImage();
}



il te faudra telecharger le framework http://script.aculo.us (je n'ai fait que le completer)

et modifier un bug de la librairie prototype, la classe insertion, je met le debut de la classe en dessous

Abstract.Insertion.prototype = {
  initialize: function(element, content) {
    this.element = $(element);
    this.content = content;
   
    //<added by="Cyril" date="24 sept 05">permet d'ajouté des noeuds</added>
    if (typeof(this.content) != 'string')
    {
        this.fragment = this.content;
        this.insertContent();
        return
    }


Enfin pour finir, il te suffit de mettre d'instancier un nouvel objet Container dans la page et dire qu'il est expandable :)

Event.observe(window, 'load',
    function()
    {
        var obj = new CSLib.Web.UI.Container('ctl00_Container1',
        {
            useCookie : true,
            expandable : true,
            ExpandOptions:
            {
                expanded: true,
                forceCookie: false,
                duration : .8
            }
         };
    }, false);


Et enfin dans le code html voici ce que tu dois avoir :

<div class="Container" id="ctl00_Container1">
 <div class="Title">coucou</div>
 <div class="Content">
    Lorem ipsum dolor sit amet, consectetuer adipiscing elit. In rhoncus, tortor eu
    vulputate pulvinar, magna mi porttitor metus, non rutrum augue nisi non orci. Proin
    laoreet varius dui. Nam ultrices lorem id odio. Nam rhoncus. Aenean porttitor, elit
    rutrum  sodales adipiscing, libero enim feugiat dui, vitae vehicula eros lectus vel
 </div>
</div>

il faut absolument respecter la sémantique : avoir

div avec id
   div pour le title
       juste le titre c'est suffisant
   div pour le contenu
       ce qu'on veut comme contenu

J'ai un peu modifié certaines parties du fichier, normalement tu n'as plus qu'a éditer 2 ou 3 bricoles pour modifier le texte et l'image, j'ai modifié un peu, car sinon j'allais rajouter encore pas mal de lignes ...

j'espere que ca te sera utile ... :)

le code est un petit peu lourd, mais il permet beaucoup de chose ! dans cette configuration, quand tu vas cliquer, tu auras un petit effet qui en 0.8 secondes (temps reglables dans les options de l'objet) tu verras le div se réduire, et c'est multi browser cette chose la :)


Cyril - MVS - MCP ASP


Cette discussion est classée dans : script, document, nbsp, divid, pdiv


Répondre à ce message

Sujets en rapport avec ce message

quel control activX ce script demande-t-il ? [ par stefbuet ] je pose cette question sur cette et celui de PDA car elle s'adrese au deux :dans le script ci-join, quel est(sont) le(s) control(s) demandé(s) ???voic Afficher/cacher un div (Résultat : Div vide) [ par tetejaune ] Bonjour, Nouveau sur ce forum je viens à vous pour vous demander votre aide. J'ai un code "simple" pour afficher/cacher un div en cliquant sur un lien Charger un contenu dans un lecteur pour internet [ par apocalalipse ] Bonjour a tous!je debute dans l' html je suis en train de créer une page internet avec un lecteur dedans.a coté je voudrais mettre par exemple 2 bouto Probleme d'anim flash ki bug sur un lien!!!? [ par masta64 ] Bonjour jsui debutant et jsui entrain de creer mon site avec une anim flash en intro qui se termine sur un joli bouton qui me script de verification formulaire [ par nacer_1954 ] SVP  j'ai un formulaire ou il ya des boutons radios et un champ de sais besoin d'aide sur un script de selection d'image [ par gohu06 ] Bonjour J'ai réalisé un script pour que lorsque le visiteur séléctionne un nom dans un des 3 menus déroulants, un photo s'affiche dans un emplacement Pb firefox pour cacher des div [ par fdthierry ] Bonjour,J'ai un menu qui se créé à partir d'une table.Le principe est le suivant:Année   Mois      JourAu chargement sous IE, je ne vois que les année Select et message d'erreur [ par sterkasor ] Bonjourjai modifie mon formulaire d'enregistrement depuis je n'ai plus d'alert d'erreur pour le paysje pense que cela viens de textbox que je lai modi window.print() avec popup [ par skeut ] Bonjour,en principe, pour imprimer une page, il suffit d'utiliser la méthode window.print(). J'essaie de l'utiliser dans un popup généré à partir d'un parametrage d'un script [ par zeroberto ] Bonjour,Je construit une page web permettant la lecture de videos datées (xxxx_061117_a.wma). Je dispose d'un script. Il doit manquer quelque chose ou


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,669 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales