• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Cookie

roadtoluca

New member
Hey Leute,

ich habe mich die letzten zwei Tage mal genauer mit Cookies beschäftigt.
Leider bin ich trotzdem nicht auf die Lösung meines Problems gekommen.
Ich habe einen Schieberegler eingebaut mit dem man den Grauwert des Hintergrunds
anpassen kann.

Der Code dazu:
Code:
//Schieberegler
function graustufen() {
	   Grauwert von Cookie auslesen
	  var grau = document.form3.graufeld.value;
  var graufeld = CookieHolen("gvalue");
  if (graufeld === "") {
  graufeld = "0";
}

document.getElementById("content").style.backgroundColor = "rgb("+ grau +"%,"+ grau +"%, " +grau+"%)";
document.getElementById("main").style.backgroundColor = "rgb("+ grau +"%,"+ grau +"%, " +grau+"%)";
document.getElementById("header").style.backgroundColor = "rgb("+ grau +"%,"+ grau +"%, " +grau+"%)";
document.getElementById("footer").style.backgroundColor = "rgb("+ grau +"%,"+ grau +"%, " +grau+"%)";
if (grau < 65) {
    var nodesArray = document.getElementsByTagName('a');
	document.getElementById("wrapper").style.color = "white";
	document.getElementById("header").style.color = "white";
	for (var i = 0; i < nodesArray.length; i++) {
    nodesArray[i].style.color = 'White';
	}}
	else if (grau > 65) {
	var nodesArray = document.getElementsByTagName('a');
	document.getElementById("wrapper").style.color = "black";
	document.getElementById("header").style.color = "black";
	for (var i = 0; i < nodesArray.length; i++) {
    nodesArray[i].style.color = 'black';
	
} 
}

Ich möchte dass der Eingestellte wert auch Später noch aktiv bleibt.
Daher habe ich diesen Cookie eingesetzt:

Code:
function gwertSetzen(gvalue) {	
	var a = new Date();
	a = new Date(a.getTime() +1000*60*60*24*365);
  	document.cookie = graufeld + "; expires=" + a.toGMTString() + ";";
}

function gwertHolen () {
      if (cookie[0].indexOf(graufeld) !== -1) {
        return decodeURIComponent(cookie[1]);
      }
        return gwertHolen;
    }
 
und wo ist das Problem? beim setzen des gespeicherten Wertes oder beim holen?

- - - Aktualisiert - - -

und da du den Wert anscheinend clientseitig zu nutzen scheinst würde ich dir zu local storage raten
 
Vermutlich beim holen.
Beim setzen gibt es ja weniger Spielraum für Fehler.

Muss leider Cookies benutzen. Ist eine Vorraussetzung.
 
wie kommt denn deine holen-function an das array graufeld? Sehe da weder eine globale Variable noch dass du sie in die funktion holst oder bin ich blind
 
was steht denn in der Fehlerkonsole? Da müsste ja dann was stehen wenn eine variable nicht gefunden wird
im Prinzip setzt du sie global und überschreibst Sie ja dann mit deiner funktion
Code:
var graufeld = '';
function graustufen() {
	   Grauwert von Cookie auslesen
	  var grau = document.form3.graufeld.value;
  graufeld = CookieHolen("gvalue");
  if (graufeld === "") {
  graufeld = "0";
}

- - - Aktualisiert - - -

und wo kommt die variable gwertHolen für den return her?

- - - Aktualisiert - - -

und CookieHolen() wo ist diese Funktion? Da passt alles vorne und hinten nicht
 
Habe jetzt die Funktion korrigiert.
Code:
function graustufen() {
	  // Grauwert von Cookie auslesen
	  
  var graufeld = gwertHolen("gvalue");
  if (graufeld === "") {
	      graufeld = "0";
  }
var grau = document.form3.graufeld.value;

Den return habe ich raus gemacht.

Als Fehlermeldung bekomme ich nun dass cookie nicht definiert ist.

Wie kann ich den cookie richtig holen.
 
Code:
function getCookie(name) {
  var value = "; " + document.cookie;
  var parts = value.split("; " + name + "=");
  if (parts.length == 2) return parts.pop().split(";").shift();
}
 
Mir scheint da einiges nicht ganz richtig zu sein. So ist die Variable grau auch nicht in dem Kontext definiert, wo sie verwendet wird. Kannst du mal ein lauffähiges Minimalbeispiel machen. In dem gezeigten Code fehlt einfach zu viel. Wo werden denn z.B. die ganzen Funktionen wie aufgerufen?

PS: globale Variablen solltest du hier auf keinen Fall verwenden.
 
Wer hat denn was von inline gesagt? Ein normaler Scope herum und alles ist gut.

Ich finde jetzt "grau" schon einen relativ allgemeinen Namen. Aber abgesehen davon, sind globale Variablen einfach prinzipiell eine schlechte Idee, wenn man sie vermeiden kann.
 
Zurück
Oben