Avatar billede henninghabor Nybegynder
12. juni 2005 - 13:42 Der er 4 kommentarer og
1 løsning

Menu med cookie

Jeg har nedenstående script, hvor jeg gerne vil ha' implementeret cookies, så den div brugeren har valgt også er åben ved visning af en ny side.

Cookie skal være tilgængelig på hele domænet og der må endvidere gerne tilføjes så kun en div er åben af gangen.

Scriptet hentes med <img src="_down.png" onclick="ShowHide('profile', this);" style="cursor: pointer;" alt="">
function ShowHide(id, img)
{
    div = document.getElementById(id);

    if(div.style.display == "block")
    {
        div.style.display = "none";

        img.src = '_down.png';
    }
    else
    {
        div.style.display = "block";

        img.src = '_up.png';
    }
}
Avatar billede skovenborg Nybegynder
13. juni 2005 - 02:00 #1
Prøv den her:
<script type="text/javascript">
  var activeDiv;
  var activeImg;
  // Preloader billede
  var pilOp = new Image();
  pilOp.src = "pilop.png";
  var pilNed = new Image();
  pilNed.src = "pilned.png";


  function showhide(ID,img) {
      if (activeDiv) {
            activeDiv.style.display = "none";
            activeImg.src = pilOp.src;
      }
      activeDiv = document.getElementById(ID);
      activeDiv.style.display = "block";
      activeImg = img;
      activeImg.src = pilNed.src;

  }
  window.onload = function() {
      if (document.cookie && document.cookie.indexOf("divId=") > -1) {
            var objIdArr = document.cookie.match(/^\S+=(\S+)\,\S+=(\S+)$/i);
            showhide(objIdArr[1],document.getElementById(objIdArr[2]));
      }
  }

  window.onunload = function() {
      if (typeof document.cookie != "undefined") {
            document.cookie = "divId="+activeDiv.id+",imgId="+activeImg.id;
      }
  }
</script>

<div id="id1" style="display:none">Div1</div>
<div id="id2" style="display:none">Div2</div>
<div id="id3" style="display:none">Div3</div>

<img src="pilop.png" id="img1" style="width:20px;height:20px;" onclick="showhide('id1',this);">
<img src="pilop.png" id="img2" style="width:20px;height:20px;" onclick="showhide('id2',this);">
<img src="pilop.png" id="img3" style="width:20px;height:20px;" onclick="showhide('id3',this);">

Det du skal huske er at give billederne en id ligesom de forskellige div-elementer (eller hvad du vil bruge). De forskellige billeder der skal vises kan du ændre på øverst oppe med de to Image-objekter (pilOp og pilNed)
Avatar billede roenving Novice
13. juni 2005 - 02:37 #2
En udvidelse af min simple menu kunne være sådan:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Simpel menu</title>
<meta name="Generator" content="Stone's WebWriter 4">
<meta name="keywords" content="roenving,http://www.eksperten.dk/spm/414464">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
.menupunkt{font-family:tahoma,verdana,arial,sans-serif;cursor:pointer;color:#9d52be;background:#fff;font-weight:800;font-style:italics;font-size:10px;width:250px;}
.menu{display:none;padding-left:5px;}
.menu a{text-decoration:none;}
.menu a:link{color:black;}
.menu a:visited{color:black;}
.menu a:hover{color:red}
.menu a:active{color:red}

</style>
<script language="javascript" type="text/javascript">
function showMenu(d){
  var id = d.id.substring(5);
  divs = document.getElementsByTagName('DIV');
  for(i=0;divs.length>i;i++){
    if(divs[i].id.indexOf('menu')==0&&divs[i].id!='menu'+id){
      divs[i].style.display='none';
      document.getElementById('o'+divs[i].id+'pic').src = "../img/plus.gif";
    }
  }
  st = document.getElementById('menu'+id).style;
  st.display = (st.display!='block')?'block':'none';
  document.getElementById(d.id+'pic').src = (st.display=='block')?"../img/minus.gif":"../img/plus.gif";
  skrivCookie('actMenu',d.id,(st.display=='none')?0:1);
}
window.onload = function(){
  var d = hentCookie('actMenu');
  if(d){
    d = document.getElementById(d);
    var id = d.id.substring(5);
    st = document.getElementById('menu'+id).style;
    st.display = (st.display!='block')?'block':'none';
    document.getElementById(d.id+'pic').src = (st.display=='block')?"../img/minus.gif":"../img/plus.gif";
  }
}
function skrivCookie(name,value,expTime,path){//Tid i dage
  switch(skrivCookie.arguments.length){
    case 1:
      var expTime = 0;
      var path = "/";
    case 2:
      var expTime = 0;
      var path = "/";
    case 3:
      var path = "/";
  }
  var exp = new Date().getTime()+expTime*24*60*60*1000;
  exp = new Date(exp).toGMTString();
  var cook = name + " = " + escape(value) + ";expires=" + exp + ";path=" + path;
  document.cookie = cook;
}
function hentCookie(name){
  if (document.cookie){
    var n = document.cookie.indexOf(name+"=");
    if (n>-1){
      var val = document.cookie.substring(n+name.length+1);
      n = val.indexOf(";");
      if(n>-1)val=val.substring(0,n);
      return unescape(val);
    }
  }else return null;
}
</script>
</head>
<body>
<div id="omenu1" class="menupunkt" onclick="showMenu(this);">
<img id="omenu1pic" src="../img/plus.gif" height="10" width="10" alt="Fold ud/ind">
Punkt 1
  <div id="menu1" class="menu" onclick="event.cancelBubble=true">
    <a href="#" onclick="return false;">Underpunkt 1</a><br>
    <a href="#" onclick="return false;">Underpunkt 2</a><br>
    <a href="#" onclick="return false;">Underpunkt 3</a><br>
    <a href="#" onclick="return false;">Underpunkt 4</a>
  </div>
</div>
<div id="omenu2" class="menupunkt" onclick="showMenu(this);">
<img id="omenu2pic" src="../img/plus.gif" height="10" width="10" alt="Fold ud/ind">
Punkt 2
  <div id="menu2" class="menu" onclick="event.cancelBubble=true">
    <a href="#" onclick="return false;">Underpunkt 1</a><br>
    <a href="#" onclick="return false;">Underpunkt 2</a><br>
    <a href="#" onclick="return false;">Underpunkt 3</a><br>
    <a href="#" onclick="return false;">Underpunkt 4</a>
  </div>
</div>
<div id="omenu3" class="menupunkt" onclick="showMenu(this);">
<img id="omenu3pic" src="../img/plus.gif" height="10" width="10" alt="Fold ud/ind">
Punkt 3
  <div id="menu3" class="menu" onclick="event.cancelBubble=true">
    <a href="#" onclick="return false;">Underpunkt 1</a><br>
    <a href="#" onclick="return false;">Underpunkt 2</a><br>
    <a href="#" onclick="return false;">Underpunkt 3</a><br>
    <a href="#" onclick="return false;">Underpunkt 4</a>
  </div>
</div>
<div id="omenu4" class="menupunkt" onclick="showMenu(this);">
<img id="omenu4pic" src="../img/plus.gif" height="10" width="10" alt="Fold ud/ind">
Punkt 4
  <div id="menu4" class="menu" onclick="event.cancelBubble=true">
    <a href="#" onclick="return false;">Underpunkt 1</a><br>
    <a href="#" onclick="return false;">Underpunkt 2</a><br>
    <a href="#" onclick="return false;">Underpunkt 3</a><br>
    <a href="#" onclick="return false;">Underpunkt 4</a>
  </div>
</div>
<div id="omenu5" class="menupunkt" onclick="showMenu(this);">
<img id="omenu5pic" src="../img/plus.gif" height="10" width="10" alt="Fold ud/ind">
Punkt 5
  <div id="menu5" class="menu" onclick="event.cancelBubble=true">
    <a href="#" onclick="return false;">Underpunkt 1</a><br>
    <a href="#" onclick="return false;">Underpunkt 2</a><br>
    <a href="#" onclick="return false;">Underpunkt 3</a><br>
    <a href="#" onclick="return false;">Underpunkt 4</a>
  </div>
</div>
</body>
</html>
Avatar billede henninghabor Nybegynder
13. juni 2005 - 08:35 #3
Hej skovenborg og roenving,

Ligger I et svar? Jeg har valgt at droppe den menu, da det bliver for omsonst for brugeren.

Tak for hjælpen. Jeg hugger nok alligevel et af jeres forslag til anden brug. :)
Avatar billede skovenborg Nybegynder
13. juni 2005 - 12:26 #4
det var så lidt :-)
Avatar billede skovenborg Nybegynder
13. juni 2005 - 20:38 #5
nå, nu nåede roenving desværre ikke at få sin del.

Men det kan der jo rådes bod på: http://www.eksperten.dk/spm/625720
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

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