Problème de cookie [Résolu]

Signaler
Messages postés
6
Date d'inscription
lundi 9 janvier 2006
Statut
Membre
Dernière intervention
20 août 2008
-
Messages postés
6
Date d'inscription
lundi 9 janvier 2006
Statut
Membre
Dernière intervention
20 août 2008
-
Bonsoir à tous,

Cela fait plusieurs jours que je me casse les dents sur la gestion d'un cookie qui serait à terme utilisé pour gérer l'affichage ou de
. J'ai essayé de voir ce que pouvait faire mon ami google, mais ca ne semble pas suffisant, j'aimerai donc si possible que quelqun m'aide à éclaircir ce mystère.

Voici le code

Merci de votre indulgence et de votre aide.

[CODE]
<script type="text/javascript">

// script pour ecrire le cookie

function SetCookie (name, value) {

    var argv=SetCookie.arguments;

    var argc=SetCookie.arguments.length;

    var expires=(argc > 2) ? argv[2] : 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.toGMTString()))+

        ((path==null) ? "" : ("; path="+path))+

        ((domain==null) ? "" : ("; domain="+domain))+

        ((secure==true) ? "; secure" : "");
}

// script pour lire le cookie

function getCookieVal(offset) {

    var endstr=document.cookie.indexOf (";", offset);

    if (endstr==-1)

              endstr=document.cookie.length;

    return unescape(document.cookie.substring(offset, endstr));

}

function GetCookie (name) {

    var arg=name+"=";

    var alen=arg.length;

    var clen=document.cookie.length;

    var i=0;

    while (i<clen) {

        var j=i+alen;

        if (document.cookie.substring(i, j)==arg)

                        return getCookieVal (j);

                i=document.cookie.indexOf(" ",i)+1;

                        if (i==0) break;}

    return null;

}

SetCookie("display",document.getElementById('q3').style.display;,date_exp,therealleague.com);

// script pour le expand-collapse

appear=function(id) {

var d = document.getElementById(id);

var pathname=location.pathname;

var myDomain=pathname.substring(0,pathname.lastIndexOf('/')) +'/';

var date_exp = new Date();

date_exp.setTime(date_exp.getTime()+(365*24*3600*1000));

 if (d.style.display!="none") {

d.style.display ="none";

cook=document.getElementById('q3').style.display;

alert(cook.value);

// on appelle le script et on crée le cookie avec la valeur de document.getElementById('q3').style.display

SetCookie("display",document.getElementById('q3').style.display;,date_exp,therealleague.com);

} else {

d.style.display ="inline";

cook=document.getElementById('q3').style.display;

alert(d.style.display.value);

SetCookie("display","document.getElementById('q3').style.display;",date_exp,therealleague.com);

 }

}

//interface

SetCookie("display","document.getElementById('q3').style.display;",date_exp,therealleague.com);

// on l'appelle et on lit.

display=GetCookie("display");

document.write(display);

alert(display.innerHTML);

//interface

</script>

[javascript:appear('q3') héhé]

lala

7 réponses

Messages postés
6
Date d'inscription
lundi 9 janvier 2006
Statut
Membre
Dernière intervention
20 août 2008

Bon et bien merci à tous car ca marche niquel.

Le code ci-dessus fonctionne parfaitement!!!
Messages postés
6
Date d'inscription
lundi 9 janvier 2006
Statut
Membre
Dernière intervention
20 août 2008

Mes
s'affichent bien lorsque je clique sur le lien. Par contre je n'arrive pas à récupérer la valeur de l'attribut style de l'élément 'q3' afin de pouvoir par la suite l'insérer dans le cookie puis le lire et ainsi afficher ou non la div en fonction du cookie.
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
33
bonjour,
si je comprend ce que tu veux faire :
réafficher la div "q3" si elle le fût précedemment ?
tu te complqiues drôelemnt les cookies !
remarques que c'est normal, tous les exemples qu'on trouve
               embreouillent à loisir
ch'tiot exemple "tout s"imple"
<!--\"#EFDCDC\"-->----

mon Site]   [M'écrire], <!--
Messages postés
6
Date d'inscription
lundi 9 janvier 2006
Statut
Membre
Dernière intervention
20 août 2008

C'est exactement ca Bultez!

Je m'y colle de suite, merci pour ton aide.
Messages postés
6
Date d'inscription
lundi 9 janvier 2006
Statut
Membre
Dernière intervention
20 août 2008

Bon nette avancée grâce à un tuto qu'on m'a filé sur un autre site.

tout marche sauf que cette ligne semble ne pas fonctionner vu que la div s'affiche quoi qu'il arrive et même si le cookie lui dit de bien s'afficher, quelqu'un voit une erreur de syntaxe?

'q3'
style="display:GetCookie('TRL_display')">lala
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
33
1° mais pourquoi passer par une fonction ( GetCookie ) qu'on n'a d'ailleurs pas ?
    document.cookie ça doit baigner ( comme dans mon exemple )
    ou alors la gestion du cookie est encore trop complquée et probablement inutile
2° un style fait appel à du css, pas à du javascript.
    il faut faire <script> document.getElementById("q3").style.display=document.cookie; </script>
Cordialement         Bul    [mon Site]  [M'écrire], <!--
Messages postés
6
Date d'inscription
lundi 9 janvier 2006
Statut
Membre
Dernière intervention
20 août 2008

Merci de ta réponse!

1° je te copie/colle mon code ci-dessous. Tu verras que grâce à un tuto j'ai épuré tout ca et je pense que c'est assez cohérent. Je me sers de la fonction GetCookie pour récupérer une partie du cookie qui contient deja d'autres données.

2° Pas con! je ne le savais pas. J'ai bien cru que ca expliquait mon problème mais ca ne marche toujours pas :/

"javascript:void(affiche('q3'));">héhé

'q3'
style="display:none">lala

<script>
// fonction qui crée le cookie
 
function SetCookie(name, value, days){
var expire = new Date ();
expire.setTime(expire.getTime() + (24 * 60 * 60 * 1000) * days);
document.cookie = name + "=" + escape(value) + "; expires=" +expire.toGMTString();
}
//fonction qui lit le cookie
function GetCookie(name){
var startIndex = document.cookie.indexOf(name);
if(startIndex != -1){
var endIndex = document.cookie.indexOf(";", startIndex);if(endIndex -1) endIndex document.cookie.length;
return unescape(document.cookie.substring(startIndex+name.length+1, endIndex));
}
else{
returnnull;
}
}
function affiche(id){
 
if(document.getElementById(id).style.display != "none"){
document.getElementById(id).style.display= "none";
SetCookie('TRL_display','none','365');
}else{
document.getElementById(id).style.display= "inline";
SetCookie('TRL_display','inline','365');
}
 
}
//alert(GetCookie('TRL_display'));
document.getElementById("q3").style.display=GetCookie('TRL_display');
;
</script>