Script cacher des div + cookie

Signaler
Messages postés
5
Date d'inscription
mardi 13 juillet 2004
Statut
Membre
Dernière intervention
21 août 2006
-
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
-
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>



[javascript:DivStatus('mondiv','<?php echo
$block['titre']; ?>') <?php echo $block['titre'];
?>]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[javascript:DivStatus('mondiv','<?php echo $block['titre'];
?>') +]




"><?php echo $block['content']; ?>




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

3 réponses

Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
42
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

http://coucou747.hopto.org
Messages postés
5
Date d'inscription
mardi 13 juillet 2004
Statut
Membre
Dernière intervention
21 août 2006

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
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
29
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;



//Cyril - MVS - MCP ASP