cookie --> array --> checkbox
danyo
- javascript
hallo,
ich hab ein für pros wohl eher unschönes skript geschrieben, dass
werte aus nem formular in einem cookie speichert, die später wieder ins formular eingelesen werden sollen. in dieser testversion des formulars wird leider nur der wert des textfeldes richtig ein und ausgelesen. wär toll wenn ihr mir sagen lönntet was falsch ist und wie ich es besser mache. ich hab alles kommentiert:
1. die importierte js datei:
function writeCookie(name, wert, verfallszeit, pfad, domain, sicherheit)
{
var CookieString = name + "=" + decodeURI(wert);
CookieString += (verfallszeit) ? "; expires=" + verfallszeit : "";
CookieString += (pfad) ? "; path=" + pfad : "";
CookieString += (domain) ? "; domain=" + domain : "";
CookieString += (sicherheit) ? "; secure" : "";
document.cookie = CookieString;
}
function readCookie(name)
{
var i=0;
var suche = name + "=";
while (i < document.cookie.length)
{
if (document.cookie.substring(i, i+suche.length) == suche)
{
var ende = document.cookie.indexOf(";", i+suche.length);
ende = (ende > -1) ? ende : document.cookie.length;
var CookieString = document.cookie.substring(i+suche.length, ende);
return decodeURI(CookieString);
}
i++;
}
return null;
}
function deleteCookie(name, domain, path)
{
var CookieString = name +"=";
CookieString += "; expires=Thu, 01-Jan-70 00:00:01 GMT";
document.cookie = CookieString;
}
2. die erste von zwei internetseiten (die zweite ist hier nicht dabei, weil unwichtig.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<script type="text/javascript" src="cookie.js"></script>
<script type="text/javascript">
<!--
// verfallszeit des cookies wird auf 1 jahr gestellt
var zeit = new Date();
zeit.setTime(zeit.getTime() + (365 * 24 * 60 * 60 * 1000));
// funktion zum erstellen des cookies
function bla()
{
var nummer = new Array(5); //formularfelder werden in einem array gespeichert
nummer[0] = document.Formu.CookieWert.value;
nummer[1] = document.form.cb.checked;
nummer[2] = document.form.cb1.checked;
nummer[3] = document.form.rb.checked;
nummer[4] = document.form.rb1.checked;
// wenn die erste checkbox gecheckt ist werden alle werte gespeichert
if (document.form.cb.checked)
{
var keks = nummer.join("+");//das array wird als string gespeichert
deleteCookie("ohne konto") // falls vorhanden wird dieses cookie gelöscht
writeCookie("alles", keks, zeit.toGMTString());//cookiename, cookiewert, verfallszeit
alert("alles" + keks); //zum überprüfen name und wert des cookies ausgeben
}
// wenn die box nicht gecheckt ist wird in das textfeld "leer" eingetragen sobald ein cookie geschrieben werden soll
else
{
deleteCookie("alles") // falls vorhanden wird dieses cookie gelöscht
nummer[0] = "leer";
var keks = nummer.join("+");
writeCookie("ohne konto", keks, zeit.toGMTString());
alert("o k" + keks);
}
}
//funktion zum lesen des cookies
function LiesCookie()
{
//wenn es ein cookie namens "ohne konto" gibt dann soll...
if (readCookie("ohne konto") != null)
{
var teilen = readCookie("ohne konto"); //es gelesen und in die var teilen geschrieben werden und mit...
var neu = teilen.split("+");//...split("+") in das array "neu" geschrieben werden
document.Formu.CookieWert.value = neu[0];// die formularfelder werden gefüllt mit den arraywerten
document.form.cb.value = neu[1];// und das hier geht nicht
document.form.cb1.value = neu[2];
document.form.rb.value = neu[3];
document.form.rb1.value = neu[4];
alert("o k" + neu); // zum prüfen wird die werte des arrays vom cookie o(hne) k(konto) ausgegeben und das geht
}
// wie oben...
else if (readCookie("alles") != null)
{
var teilen = readCookie("alles");
var neu = teilen.split("+");
document.Formu.CookieWert.value = neu[0];
document.form.cb.value = neu[1];
document.form.cb1.value = neu[2];
document.form.rb.value = neu[3];
document.form.rb1.value = neu[4];
alert("alles" + neu);
}
else
{
alert("kein cookie geladen");
}
}
//-->
</script>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Unbenanntes Dokument</title>
</head>
<body onLoad="LiesCookie()" onUnload="bla()">
<form name="Formu">
<label>Cookie-Wert:
<input type="Text" name="CookieWert" value="Wert eingeben" size="30">
</label>
</form>
<form name="form">
<input type="checkbox" name="cb" value="checkbox">
<input type="checkbox" name="cb1" value="checkbox">
<input type="radio" name="rb" value="radiobutton">
<input type="radio" name="rb1" value="radiobutton">
</form>
<p><a href="cookiearray2.htm">llll</a></p>
</body>
</html>
hi,
document.Formu.CookieWert.value = neu[0];// die formularfelder werden gefüllt mit den arraywerten
document.form.cb.value = neu[1];// und das hier geht nicht
value von checkboxen setzen zu wollen, ist wenig praktikabel.
manipuliere stattdessen ihre checked-eigenschaft.
gruß,
wahsaga
hi,
ich probier das aus sobald ich zeit hab.
danke wahsaga.
mfg,
danyo
moin,
jetzt wird zwar was ausgelesen, aber nicht das richtige.
hab jetzt value statt checked geschrieben. da muss noch ein fehler sein. ka wo?
danyo