---
title: "visadolj med cookie + session"
type: "forum-thread"
url: "https://www.webforum.nu/amne/javascript/118982-visadolj-med-cookie-session"
topic: "JavaScript"
topic_url: "https://www.webforum.nu/amne/javascript"
author: "niceform"
published: "2004-12-30T16:08:56.000Z"
updated: "2005-01-04T23:33:18.000Z"
replies: 8
views: 485
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/javascript/118982-visadolj-med-cookie-session"
---

# visadolj med cookie + session

## #1 — niceform, 2004-12-30T16:08Z

Hej,
jag vill att en cookie skall spara info om hur en \<div\> är synlig eller ej 
och för dom som ej tar emot cookies skall info sparas i en session. 
Nästa gång man öppnar sidan så ser det likadant ut som när man lämnade den.
Kan ni hjälpa mig plantera in denna funktion i följande script:

```
function visadolj(obj) {

   if(obj.style.display=='none') {
   obj.style.display='block'
   var x = 1
   }
   else {
   obj.style.display='none'
   var x = 2
   }
}
```

Permalänk: https://www.webforum.nu/p/118982

## #2 — Peter S, 2004-12-30T17:00Z

Hej och välkommen till wF!

Antag att elementet som skall gömmas har id = foo. Då

```
<script type="text/javascript">

window.onload = function(){
    var obj = document.getElementById("foo");

    obj.style.display = getCookie('display');
}

function getCookie(c){
    var cookies = document.cookie;

    if (cookies.indexOf(c) == -1) return "block";

    return cookies.split(c + '=')[1].replace(/(block|none).+/g, '$1');
}

function visadolj(obj){
    var obj  = document.getElementById(obj),
	st   = "",
	date = new Date();

    obj.style.display = obj.style.display == "none" ? (st = "block") : (st = "none");

    date.setFullYear(date.getFullYear() + 1);
    document.cookie = "display=" + st + "; expires=" + date.toGMTString();
}

</script>
```

Sessionsrelaterade frågor hör bättre hemma i något av de andra delforumen.

 :)

Permalänk: https://www.webforum.nu/p/1516144

## #3 — niceform, 2004-12-30T22:24Z

Tack,
men jag får det inte att fungera riktigt.
Hela min kod ser ut så här:

```
<head>
<script language=JavaScript>
function visadolj(obj) {

   if(obj.style.display=='none') {
   obj.style.display='block'
   var x = 1
   }
   else {
   obj.style.display='none'
   var x = 2
   }
}
</script>
</head>
<body>
Objekt nr1 <a href="javascript:visadolj(u1)"> Visa / dölj text</a><br>
<div id="u1" style="display: none">
Text om objekt
</div>
<hr>
Objekt nr2 <a href="javascript:visadolj(u2)"> Visa / dölj text</a><br>
<div id="u2" style="display: block">
Text om objekt
</div>
<hr>
</body>
```

Permalänk: https://www.webforum.nu/p/1516279

## #4 — Jesper T, 2004-12-31T07:41Z

Byt ut "foo" mot det element som skall gömmas/visas (ex. "u1").
Sätt till apostrofer här: javascript:visadolj('u1') 

Om du skall få detta att funka på många element så måste du nog göra på något annat sätt än det Peter S föreslog.

Permalänk: https://www.webforum.nu/p/1516393

## #5 — niceform, 2004-12-31T08:23Z

Ahh....Tack, 
det var ej "foo" för den bytte jag ut, men dock missat  apostrofer. :r 
:e Stort tack till Peter S och Jesper T.

Permalänk: https://www.webforum.nu/p/1516397

## #6 — niceform, 2005-01-01T01:46Z

> Om du skall få detta att funka på många element så måste du nog göra på något annat sätt än det Peter S föreslog.

 
Någon som har ett annat förslag? :l

Permalänk: https://www.webforum.nu/p/1516772

## #7 — niceform, 2005-01-04T16:18Z

Finns det inte någon som har förslag på kod när det gäller fler element?  :x

Permalänk: https://www.webforum.nu/p/1518595

## #8 — Jojoxx, 2005-01-04T17:12Z

Du kan spara fler element-inställningar i samma cookie:

```
<script type="text/javascript">
var saveElements=["foo","bar"];

window.onload = function(){
	var p=getCookie('display').split(".");
	for(var i=0;i<p.length-1;i++){
		document.getElementById(p[i].split(":")[0]).style.display=p[i].split(":")[1];
	}
}
window.onunload = function(){
	var c=""; var date = new Date();
	date.setFullYear(date.getFullYear() + 1);
	for (var i in saveElements){
		c+=saveElements[i]+":"+document.getElementById(saveElements[i]).style.display+"."
	}
    document.cookie = "display="+escape(c)+"; expires=" + date.toGMTString();
}
function getCookie(c){
	var cookies=document.cookie.split("; ");
	for (var i in cookies){
		if(cookies[i].split("=")[0]=="display"){ return unescape(cookies[i].split("=")[1]); }
	}
	return "";
}
function visadolj(obj){
    var obj  = document.getElementById(obj);
    obj.style.display = obj.style.display == "none"?"block":"none";
}

</script>

<div id="foo" style="display:block;">foo</div>
<div id="bar" style="display:block;">bar</div>

<a href="#" onclick="visadolj('foo'); return false;"> foo</a>
<a href="#" onclick="visadolj('bar'); return false;"> bar</a>
```

[Begräsningar](http://www.jojoxx.net/faq/faqview.asp?q=70)

> **niceform skrev:**
>
> ...och för dom som ej tar emot cookies skall info sparas i en session.

Även session-variabeler kräver att att du har tillgång till cookies eftersom nyckeln till session-variabeln är just en cookie. Ingen cookie, inga session-variabler.

Permalänk: https://www.webforum.nu/p/1518649

## #9 — niceform, 2005-01-04T23:33Z

Snyggt Jojoxx!

Tack för hjälpen,  :birp  down the hatch!

Permalänk: https://www.webforum.nu/p/1518866

---

Tråden på webben: https://www.webforum.nu/amne/javascript/118982-visadolj-med-cookie-session
