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

Problem mit Cookie

Sonni174

New member
Ich bin dabei ein Quiz zu programmieren.
Ich möchte, dass man nach dem man sein Ergebnis gesagt bekommen hat, was auch schon funktioniert, es in die Liste unter "Letzes Mal" eingetragen werden kann.
Ich habe einen Cookie erstellt, in dem steht, dass wenn man auf "Ergebnis speichern" drückt, der Text, der unter "Letzes Mal" steht, durch das Ergebnis ersetzt wird und als Cookie gespeichert werden soll.
Und wenn man die Seite neulädt ist oben angeben, dass wenn ein Cookie existiert, er durch den Text, der unter "Letzes Mal" steht, ersetzt werden soll.

Blöderweise klappt das irgendwie nicht... Könnte mir einer sagen, wieso und was ich verbessern müsste?

HTML:
<body>
<script type="text/javascript">
if (document.cookie) {document.getElementById('letzesmal').innerHTML = ergebnis};
function speichern() {
		document.cookie =document.getElementById('letztesmal').innerHTML = ergebnis;
}
function quiz() {
	var i=0;
	var a=1;
	function antwort() {
		if (x=="1") {alert ("Richtig!");} else {alert ("Falsch! "+y);}
		if (x=="1") {i=i+a} else {i=i}
	}
	x=prompt("Wie heisst James Potters Sohn?","");
		if (x=="Harry") {x="1";}
		else if(x=="harry") {x="1";}
		else if(x=="Harry Potter") {x=="1";}
		else if (x=="harry potter") {x=="1";}
		else if (x=="Harry potter") {x=="1";}
		else if (x=="harry Potter") {x=="1";}
		else {x="2";}
		y ="Er heisst doch natuerlich Harry Potter!";
	antwort(x)
	document.getElementById('ergebnis').innerHTML = 'Du hast <b>'+i+' von 1 </b>richtig!';
	alert("Du hast "+i+" von 1 richtig!");
}
</script>
<input type="button" onClick="quiz()" value="Quiz"  />
<p id="ergebnis">Das Ergebnis deines Tests wird ausgewertet...</p><input type="button" onClick="speichern()" value="Ergebnis speichern" /><br /><br />
<p><b>Letzes Mal:</b></p>
<p id="letzesmal">Noch keine Einträge</p>
</body>
 
Deinen Fehler kann man sehr schnell mit der Fehlerkonsole finden.

PS: Tipp: "letztesmal" !== "letzesmal"
PPS: Schau' dir mal die Funktion String.toUpperCase() oder String.ToLowerCase() an. Die könnten deinen Code erheblich vereinfachen.
PPPS: x und y sind unnötigerweise globale Variablen. Auch übergibst du der Funktion antwort einen Parameter, den sie gar nicht erwartet.
PPPPS: Cookies funktionieren etwas anders, als du es dir vorstellst. Die werden in Value-Key-Paaren gespeichert und müssen so auch ausgelesen werden.

So jetzt normal im Text weiter... werden sonst zu viele Ps.

Du hast die Variable "ergebnis" nirgends deklariert, willst sie aber in speichern() und auch gleich beim Laden der Seite verwenden. Woher soll der Browser wissen, was da drin gespeichert werden soll?

Zu guter Letzt hast du noch das Problem, dass du, wenn das Cookie gesetzt ist, auf ein DOM-Element zugreifen willst, das zur Ausführungszeit des Skriptes nocht gar nicht existiert: <p id="letzesmal">. Der Browser arbeitet das HTML von oben nach unten ab und wenn er JS sieht, wird das sofort ausgeführt. Packe also dein <script> hinter das <p> oder arbeite mit window.onload.
 
Zurück
Oben