Avatar billede 4us.dk Nybegynder
23. august 2003 - 02:22 Der er 15 kommentarer og
3 løsninger

Cookie i javascript?

Jeg har en kode som:

<a href="#" onclick="visskjul();">Link</a>
<div style="display: none;" id="noget">vis eller skjul</div>

Jeg har så lavet, at hvis man trykker på "Link" så vil teksten "vis eller skjul" komme frem, og hvis man trykker igen, forsvinder den igen... sådan set smart nok :)

Problemet er at jeg godt vil høre hvordan man laver det så det bliver husket.
- Hvis nu jeg vil have at "vis eller skjul" skal stå på siden allerede når jeg kigger næste gang.

Det må næsten gøres med noget cookies? i javascript?
- har jeg ikke forstand på...

Men jeg har lagt mærke til at Eksperten.dk har deres menueer på samme måde... med at den gemmer det man har valgt.

Håber der er nogen som kan forklare hvordan man gør
- på forhånd tak :)
Avatar billede molle2002 Nybegynder
23. august 2003 - 10:57 #1
http://www.spywarefri.dk/ prøv at kigge der også gå ind under download.. der er nogle programmer til cookies
Avatar billede wired Nybegynder
23. august 2003 - 12:15 #2
Hvis du vil lære om cookies er der nogle gode eksempler på www.html.dk
www.eksperten.dk bruger coolmenus4 fra www.dhtmlcentral.com
Avatar billede wired Nybegynder
23. august 2003 - 12:23 #3
Men de gemmer deres informationer via følgende script www.eksperten.dk/js/eksperten.js
Avatar billede 4us.dk Nybegynder
23. august 2003 - 12:45 #4
Ja, jeg ved godt hvilken menu eksperten.dk bruger, og jeg kender også det javascript som wired linkede til, og har kigget på html.dk og spywarefri...

men det jeg går lidt efter, er et lille eksempel, og ikke 255 linier javascript kode.

Eksempel en tekst, som udskrives første gang man er på siden, og derefter gemmer den en javascript cookie, og næste gang skriver den ikke den samme tekst...

eller noget... bare en form for eksempel som man kan tage fat på :)
Avatar billede roenving Novice
23. august 2003 - 12:53 #5
Ikke et kort eksempel, men jeg kunne ikke lige finde linket til det spørgsmål det blev lavet til, så du får hele koden:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Cookie-test</title>
<meta name="Generator" content="Stone's WebWriter 3.5">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

<script language="javascript" type="text/javascript">
ns4 = (document.layers)? true:false
ie4 = (document.all)? true:false
ie5 =(document.getElementById)? true:false
ns6 = (document.getElementById && !document.all)?true:false;

function ShowHide(id){
var act = "0";
var styleObj = (ns4)? document.layers[id] : (ie4)? document.all[id].style : document.getElementById(id).style;
if(styleObj.display == "none"){
styleObj.display = "";
act = "1";
}else{
styleObj.display = "none"
}
updateCookie(id,act);
}

function updateCookie(id,act){
    var found = false;
    if(document.cookie){
        var oldCook = document.cookie;
        var tmp = oldCook.split(";");
        for (i=0;tmp.length>i;i++){
            if (tmp[i].indexOf("ShowHide=")!=-1){
                newCook = tmp[i].substring(9+tmp[i].indexOf("ShowHide=")).split(":");
                found = true;
                break;
            }
        }
        var updated = false;
        if (found){
        for (i=0;newCook.length>i;i++){
            if (newCook[i].indexOf(id+"-")==0){
                newCook[i] = id+"-"+act;
                updated = true;
                break;
            }
        }
        }else{newCook = new Array();}
        if(!updated){
            newCook[newCook.length] = id+"-"+act;
        }
    }else{
        newCook = new Array();
        newCook[0] = id+"-"+act;
    }
    var exp = new Date();
    exp.setYear(exp.getFullYear()+1);//cookien gælder et år
    var txt = "ShowHide="+newCook.join(":")+"; expires="+exp.toGMTString()+"; path=/; domain=.surfersinfo.dk";
    document.cookie = txt;
}

function updateShowHide(){
    if (document.cookie){
        var tmp = document.cookie.split(";");
        var cook = false;
        for (i=0;tmp.length>i;i++){
            if (tmp[i].indexOf("ShowHide=")!=-1){
                newCook = tmp[i].substring(9+tmp[i].indexOf("ShowHide=")).split(":");
                cook = true;
                break;
            }
        }
        if(cook){
            for (i=0;newCook.length>i;i++){
                id = newCook[i].substring(0,newCook[i].indexOf("-"));
                act = newCook[i].charAt(newCook[i].length-1);
                var styleObj = null;
                if(ns4){
                    styleObj = document.layers[id];
                }else    if(ie4){
                      if (document.all[id]){styleObj = document.all[id].style;}
                  }else{
                    if (document.getElementById(id)){styleObj = document.getElementById(id).style;}
                  }
                if (styleObj){
                    if(act==0){
                        styleObj.display = "none";
                    }else{
                        styleObj.display = "";
                    }
                }
            }
        }
    }
}
</script>
</head>
<body bgcolor="#FFFFFF" text="#000000" onload="updateShowHide()">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td onclick="java script:ShowHide('menu_box_1')" class=menu_box_0 title="vis / gem" bgcolor="#999999">klik
      her </td>
  </tr>
  <tr>
    <td onclick="java script:ShowHide('menu_box_2')" class=menu_box_0 title="vis / gem" bgcolor="#999999">klik
      her (2)</td>
  </tr>
</table>
<div name="menu_box_1" id="menu_box_1" style="display:block;">
  <table width="100%" border="0" cellspacing="0" cellpadding="0">
    <tr>
      <td bgcolor="#FF6600">OLAV1</td>
    </tr>
  </table>
</div>
<div name="menu_box_2" id="menu_box_2" style="display:block;">
  <table width="100%" border="0" cellspacing="0" cellpadding="0">
    <tr>
      <td bgcolor="#FF6600">OLAV2</td>
    </tr>
  </table>
</div>
</body>
</html>
Avatar billede wired Nybegynder
23. august 2003 - 13:04 #6
Øhhh. som dette her:

<html>
<body>
<!-- Gem cookie -->
<script language="JavaScript">
  document.cookie = "Totally" + "Wired";
</script>

<!-- Hent cookie -->
<script language="JavaScript">
  alert(document.cookie);
</script>

</body>
</html>
Avatar billede wired Nybegynder
23. august 2003 - 13:19 #7
Eller ved brug af flere cookies:

<html>
<body>
<script language="JavaScript">
  document.cookie = "MyCookie nr. 1" + "=" + "Wired";
  document.cookie = "MyCookie nr. 2" + "=" + "Wired";
</script>

<script language="JavaScript">
  alert(document.cookie.split("; ")[0]);
  alert(document.cookie.split("; ")[1]);
  alert(document.cookie.split("; ")[2]);
  alert(document.cookie.split("; ")[3]);
</script>

</body>
</html>
Avatar billede wired Nybegynder
23. august 2003 - 13:20 #8
Avatar billede 4us.dk Nybegynder
23. august 2003 - 13:22 #9
wired: hvor lang tid virker den cookie? og kan man bruge den på hvilken som helst side på sit webhotel, når først den er sat?

Og hvordan laver man flere cookies?

document.cookie2 - agtigt noget :)
Avatar billede 4us.dk Nybegynder
23. august 2003 - 13:24 #10
roenving: jeg har lige afprøvet din kode... den virker som alm. open/close menu...

Hvis jeg åbner eller lukker den, og opdaterer, så starter den forfra... den gemmer ikke det jeg trykkede, hvordan kan det være?
:)
Avatar billede 4us.dk Nybegynder
23. august 2003 - 13:39 #11
Det er lidt i stil med et roenving gav af kode, som jeg er ude efter... bortset fra den ikke virker :)
Avatar billede roenving Novice
23. august 2003 - 13:44 #12
Den virker ikke, fordi der er sat domæne ind, som åbenlyst er forkert ...

Udskift denne linje:
    var txt = "ShowHide="+newCook.join(":")+"; expires="+exp.toGMTString()+"; path=/; domain=.surfersinfo.dk";

med:

    var txt = "ShowHide="+newCook.join(":")+"; expires="+exp.toGMTString()+"; path=/";
Avatar billede 4us.dk Nybegynder
23. august 2003 - 14:12 #13
woot

Ser sku ud til at virke... jeg leger lige lidt med det, og vender fryygteligt tilbage :)
Avatar billede 4us.dk Nybegynder
23. august 2003 - 15:20 #14
Jeps, ingen problemer med den, det kører bare! :)

kom lige med et svar roenving.


- er der for resten noget jeg skal vide om det? Hvor lang tid varer javascript cookien her evt.?
Avatar billede roenving Novice
23. august 2003 - 15:41 #15
Som der er kommenteret er den indstillet til at vare et år:

    exp.setYear(exp.getFullYear()+1);//cookien gælder et år

-- det kan ændres på en del måder, men der er brugt en simpel metode her, som ikke kan lave fejl (et årstal er altid absolut et tal, og det kan ikke blive for stort som en månedsangivelse f.eks. kan !-)

-- og velbekomme '-)
Avatar billede 4us.dk Nybegynder
23. august 2003 - 16:15 #16
Okay, lagde ikke lige mærke til kommentaren :)

ét år, kan jeg nok godt lige leve med :)

Mange tak alle sammen
Avatar billede roenving Novice
23. august 2003 - 16:17 #17
-- og tak for points ;~}
Avatar billede wired Nybegynder
23. august 2003 - 16:29 #18
thx for points...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester