Jag skulle behöva hjälp med cookies i en funktion som byter stilmallar utan skript i HTML-koden.
Funktionen med att byta stilmallar med drop-down menyn "change" i <select> taggarna fungerar som den ska utan att jag använder javascript i html-koden. Men hur får man det att sparas i cookies så att när laddar om sidan så är den stilmallen man senast valt inställd? Nu när man laddar om väljer den automatiskt den första.
Jag har testat olika metoder som att använda onclick i html-koden och göra stilmalls-bytet genom länkar, <a>, istället och då sparas det i cookies. Men hur ska man göra för att i detta fall få det att sparas när väljer i drop-down menyn och sköta allt via det externa javascriptet?
function createCookie(name,value,days) {
if (days) {
var date = new Date();
date.setTime(date.getTime()+(days*24*60*60*1000));
var expires = "; expires="+date.toGMTString();
}
else var expires = "";
document.cookie = name+"="+value+expires+"; path=/";
}
function readCookie(name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for(var i=0;i < ca.length;i++) {
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1,c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
}
return null;
}
function chooseStyle(style) {
createCookie("style", style, 30);
var title = document.getElementById("change").value;
var theLinks = document.getElementsByTagName("link");
for(i = 0; i < theLinks.length; i++) {
var a = theLinks[i];
if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title")) {
a.disabled = true;
if(a.getAttribute("title") == title) a.disabled = false;
}
}
}
function pageLoaded(){
var styleCookie = document.getElementById("change");
styleCookie.onchange = chooseStyle;
var style = readCookie("style");
if (style == null){
style = 0;
}
chooseStyle(style);
}
window.onload = pageLoaded;
Det är ju bara att jag inte förstår varför cookies inte fungerar, det gör det om jag har använder metoden som du länkade till men inte med det som jag vill göra..
Det är ju bara att jag inte förstår varför cookies inte fungerar, det gör det om jag har använder metoden som du länkade till men inte med det som jag vill göra..
Det är inte det som är problemet, att skapa en cookie med din kod och läsa av den är inga problem.
funkar inte, jag kör ju chrome men på server så det är ju inte lokalt så det är ju inte problemet.
nu ser det ut så här:
function createCookie(name,value,days) {
if (days) {
var date = new Date();
date.setTime(date.getTime()+(days*24*60*60*1000));
var expires = "; expires="+date.toGMTString();
}
else var expires = "";
document.cookie = name+"="+value+expires+"; path=/";
}
function readCookie(name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for(var i=0;i < ca.length;i++) {
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1,c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
}
return null;
}
function chooseStyle() {
var title = document.getElementById("change").value;
var theLinks = document.getElementsByTagName("link");
createCookie("style", title, 30);
for(i = 0; i < theLinks.length; i++) {
var a = theLinks[i];
if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title")) {
a.disabled = true;
if(a.getAttribute("title") == title) a.disabled = false;
}
}
}
function pageLoaded(){
var styleCookie = document.getElementById("change");
styleCookie.onchange = chooseStyle;
var style = readCookie("style");
if (style == null){
style = 0;
}
chooseStyle();
}
window.onload = pageLoaded;
kör debug i chrome developer tools, och snälla använd [kod]-block för att kapslar in koder, bli lättare att läsa. cookie måste köras via en server om jag inte minns helt fel?
oj jaha när jag skrev koden så såg det bättre ut, sorry.
Jag får inte några felmedelanden i chrome när jag går in i javascripts konsolen. Är det något jag missar något stavfel. Det finns ju jättebra tutorials men alla har ju exempelvis onClick i html-koden och då fungerar det med cookies. men nu när jag helt separerar javascript från html fungerar det inte. Har det med min <select> meny att göra? eller det kanske inte är i den problemet ligger