niceformMedlem sedan dec. 20047 inlägg
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
}
}
Peter SMedlem sedan dec. 20025 484 inlägg
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.
:)
niceformMedlem sedan dec. 20047 inlägg
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>
Jesper TMedlem sedan nov. 20017 058 inlägg
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.
niceformMedlem sedan dec. 20047 inlägg
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.
niceformMedlem sedan dec. 20047 inlägg
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
niceformMedlem sedan dec. 20047 inlägg
Finns det inte någon som har förslag på kod när det gäller fler element? :x
JojoxxMedlem sedan juni 20004 306 inlägg
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
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.
niceformMedlem sedan dec. 20047 inlägg
Snyggt Jojoxx!
Tack för hjälpen, :birp down the hatch!