Avatar billede laksen Nybegynder
18. oktober 2003 - 18:47 Der er 6 kommentarer og
1 løsning

Variabel indeholdt i anden variabel

Dette spørgsmål er fortsat fra http://www.eksperten.dk/spm/414423. Mit spm. har ændret karakter, så jeg spørger påny.

Jeg skal bruge en funktion, der kan følgende:
- funktionen får 2 værdier: 1 fra en cookie og 1 fra siden.
- der skal undersøges, om værdien fra siden er indeholdt i værdien fra cookien (eks: cookie-værdi = "menu_1,menu_2" og side-værdi = "menu_2" -> værdi indeholdt).
- hvis værdien ikke er indeholdt, skal den tilføjes til cookie-værdien.
- hvis værdien er indholdt, skal den slettes fra cookie-værdien.

Jeg skal IKKE bruge en funktion til at skrive til og hente fra cookien. Dem har jeg allerede.
Avatar billede roenving Novice
19. oktober 2003 - 06:05 #1
Hvis vi kan regne med, at delimiteren er et komma:

function replaceCookieValue(Cval,Mval){
if(Cval.indexOf(Mval)>-1){
  if(Cval.length==Mval.length)return "";
  Cval = Cval.split(",");
  var Nval = "";
  for(i=0;Cval.length>i;i++){
    if(Cval[i]!=Mval)Nval += Cval[i] + ",";
  }
  return Nval.substring(0,Nval.length-1);
}else if(Cval.length>0)return Cval+","+Mval;
else return Mval;
}

-- og så burde vi kunne regne med at kommaet er der, for vi laver det jo sæl !-)
Avatar billede laksen Nybegynder
19. oktober 2003 - 16:22 #2
roenving:

Nu ser mine funktioner således ud:

function replaceCookieValue(Cval,Mval){
  if(Cval.indexOf(Mval)>-1){
    if(Cval.length==Mval.length)return "";
    Cval = Cval.split(",");
    var Nval = "";
    for(i=0;Cval.length>i;i++){
      if(Cval[i]!=Mval)Nval += Cval[i] + ",";
      }
    return Nval.substring(0,Nval.length-1);
  }else if(Cval.length>0) return Cval+","+Mval;
  else return Mval;
}
function skrivCookie(name,value,expTime,path){//Tid i dage
  value = replaceCookieValue(hentCookie('menu'),value);//PROBLEM
  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);
    }
  }
}

Når der trykkes på menu-punkterne hentes funktionen skrivCookie. Det hele fungerer bortset fra 1 ting: I Mozilla fungerer alt, men i Explorer melder den fejl, når den henter cookien og denne ikke indeholder nogen værdi (Se min markering ovenfor ved PROBLEM). Kan du ikke hjælpe mig med det...
Avatar billede laksen Nybegynder
19. oktober 2003 - 21:27 #3
Det er hentCookie-funktionen, den er gal med.
Avatar billede roenving Novice
19. oktober 2003 - 23:38 #4
Nu er det et par måneder siden jeg intensivt testede cookies, og der husker jeg ikke at støde ind i problemer (bruger selv IE som umiddelbare testplatform), men måske skal der returneres en værdi under alle omstændigheder:

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 "";
  }else return "";
}
Avatar billede laksen Nybegynder
19. oktober 2003 - 23:46 #5
Det var det hele. Det spiller max. TAK! Det var super, at du kunne hjælpe en javascript-abe som mig :D
Avatar billede roenving Novice
19. oktober 2003 - 23:47 #6
Velbekomme '-)
Avatar billede roenving Novice
20. oktober 2003 - 00:52 #7
-- og tak 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