04. december 2003 - 11:35
Der er
14 kommentarer og 1 løsning
bevare menu udseende
Jeg har lavet en menu ligesom stifinder, bare i javascript. Min venstre side er lavet med tabelrækker som enten er display: 'block' eller 'none'. Hvis jeg så¨har et link i menuen, som skal ændre udseendet på højresiden, så reloades siden, men hvordan bevarer jeg venstresiden som den så ud da den sidst var på klienten? Altså så de rækker der havde display: block de stadig har det??
Annonceindlæg tema
Offentlig digitalisering
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
04. december 2003 - 13:50
#1
Må det ikke være frames?
04. december 2003 - 13:57
#2
Anyway, du kan styre det med cookies, jeg foreslår at du laver to arrays, et der indeholder alle id'er for tr'er der skal kunne skjules: var arrTd = new Array() arrTd[0] = "td0" arrTd[1] = "td1" arrTd[2] = "td2" og et andet array AF SAMME LÆNGDE, der fortæller om hver tr skal skjules: var arrHidden = new Array() arrHidden[0] = "0" arrHidden[1] = "1" arrHidden[2] = "0" I dette tilfælde skal tr1 altså vises, og kun den så laver du en function showHide(){ for (i=0;i<arrTr.length;i++){ document.all[arrTr[i]].style.display = (arrHidden[i]=="1") ? "block" : "none" } } Er du med så langt?
04. december 2003 - 15:51
#3
ja, det ser fint ud indtil videre :o)
08. december 2003 - 08:28
#4
Hvordan gemmer du den så??? er det med en cookie eller hvordan?
09. december 2003 - 12:18
#5
Hej igen Ja, jeg vil gemme begge arrays i cookies, som tekststrenge. Så ved onLoad checkker jeg om cookies findes, ellers laver jeg tomme arrays: function initArrays(){ if (findCookie == ""){ var arrTd = new Array() arrTd[0] = "td0" arrTd[1] = "td1" arrTd[2] = "td2" var arrHidden = new Array() arrHidden[0] = "0" arrHidden[1] = "1" arrHidden[2] = "0" }else{ arrTd = findCookie("arrTd").split(",") arrHidden = findCookie("arrHidden").split(",") } showHide() } //simpel cookie function: function findCookie(name) { var t = document.cookie; first = t.indexOf(name); value = "" if(first != -1){ first += name.length + 1; last = t.indexOf(';', first-1); if(last == -1) last = t.length; if (last > first) value = t.substring(first, last); } return value } Ved unLoad (evt ved alle kliks) gemmer jeg arrays: function saveArrays(){ document.cookie += "arrTd=" + arrTd.join(",") document.cookie += "arrHidden=" + arrHidden.join(",") }
09. december 2003 - 12:23
#6
Arrays er altså gemt som fx: "td0,td1,td2" og "0,1,0" Nu angler du bare at skrive til arrays, så på linket i td1 skriver du fx. <a href="java script:menuClick(1)">link</a> og laver en function: function menuClick(n){ arrHidden[n] = (arrHidden[n] == "0") ? "1" : "0" showHide() } Skal der ske andet ved klik end at menuen foldes ud/ind?
09. december 2003 - 12:24
#7
intet af dette er testet, så lad mig vide om der er fejl
09. december 2003 - 12:32
#8
retelse (der sikkert ikke er nødvendig, men anyway): function saveArrays(){ document.cookie += "arrTd=" + arrTd.join(",") + ";" document.cookie += "arrHidden=" + arrHidden.join(",") + ";" }
09. december 2003 - 12:33
#9
Jeg kan se at jeg skifter mellem arrTd og arrTr, det er naturligvis en fejl, men jeg fornemmer at du har ok styr på det?!?
10. december 2003 - 12:21
#10
Det ser lovende ud det her, men jeg har et tilføjelses problem. mit arrTr() bliver temmelig stort, faktisk på mere end 100 elementer og det vil jeg gerne bygge op på serveren direkte fra DB. Ved du hvordan man opbygger et javascript og array i asp koden ???
11. december 2003 - 11:15
#11
bare glem det sidste, jeg laver den på klienten
11. december 2003 - 15:58
#12
Jeg har problemer med at få mit array gemt som cookie !! Her er mine funktioner som henholdsvis sætter og henter cookien: function saveArrays() { document.cookie += "arrTr=" + arrTr.join(",") + ";" document.cookie += "arrHidden=" + arrHidden.join(",") + ";" } function findCookie(name) { var t = document.cookie; first = t.indexOf(name); value = ""; if ( first != -1 ) { first += name.length + 1; last = t.indexOf(';', first-1); if(last == -1) last = t.length; if (last > first) value = t.substring(first, last); } return value ; } I funktionen initArrays(), kaldes findCookie() men den returnerer aldrig andet end en tom streng, og derfor laver den jo altid et nyt array. Har du en god ide ? :o)
11. december 2003 - 18:43
#13
Ja, der har jeg jo lave endnu en fejl, det går da helt i skoven et her. Det skal være function initArrays(){ if (findCookie("arrHidden") == ""){ .... osv Jeg spørger om arrHidden findes, hvis den er der så er de der begge
11. december 2003 - 20:27
#14
Det der har jeg prøvet, og lige prøvet igen, men uden held. Vil jeg ikke kunne finde cookien på HD hvis den er sat?
12. december 2003 - 11:47
#15
Jeg har fået det til at (næsten) virke, ved at fjerne + i disse sætninger: document.cookie += "arrTr=" + arrTr.join(",") + ";" document.cookie += "arrHidden=" + arrHidden.join(",") + ";" så det bliver : document.cookie = "arrTr=" + arrTr.join(",") + ";" document.cookie = "arrHidden=" + arrHidden.join(",") + ";" Nu vil jeg egentlig gerne have min cookie "clearet" en gang i mellem, eller sat en udløbsdato på,. hvordan gøres det? og stadig vil jeg gerne vide hvor på maskinen man kan finde sine cookies?
Vi tilbyder markedets bedste kurser inden for webudvikling