Hallo Daniel,
nur damit du dich nicht wunderst, ich habe gerade den Quellcode noch einmal -im doppelten Sinne- verschlankt hochgeladen und bei Butter und Schmalz Radio-Buttons draus gemacht, sodass man immer nur eins von beidem wählen kann: Das ist ja dann auch fett genug. (Die Liedtexte von Backe-Backe-Kuchen schwanken übrigens zwischen Zucker und Butter)
Bei Radio-Buttons hat man ja das Problem, dass man da nicht nur den angeklickten anwählt, sondern einen anderen, zuvor angewählten aus der Gruppe auch gleichzeitig abwählt, was ich auch noch in meinem Cookie-Script nachvollziehen musste.
Aber jetzt zu deiner Frage:
Wie setzt du die Checkboxen beim Laden der Seite auf checked/
unchecked?
Geschieht das in dieser Zeile oder täusche ich mich da
vielleicht?
myForm[mySingleCookieParts[0] ].checked =
parseInt( mySingleCookieParts[1] );
Diese Zeile wird ja beim Laden des Fensters ausgeführt, wenn
schon ein Cookie gesetzt ist, aber was macht sie genau?
Ja, das geschieht genau in dieser Zeile.
Ich spreche die Elements-Collection meines Formulars, wie gesagt, nicht mehr über deren Index an, wie noch in meiner ersten Version, sondern über die IDs ihrer Members (Die Elements-Collection als assoziatives Array, sozusagen). Die ID des Elements wird bei Klick darauf ja als erster Teil des einzelnen Cookies vor dem Gleichheitszeichen angelegt. Als zweiter Teil des Einzelcookies wird je nachdem, ob das Element gecheckt ist oder nicht eine „1“ oder eine „0“ hinter das Gleichheitszeichen in das Cookie geschrieben.
Wenn ich die Werte nachher auslese, splitte ich die Gesamtcookie-Datei erst einmal an den Semikolons, die von einem Leerzeichen gefolgt werden. Dadurch erhalte ich ein Array mit allen Einzelcookies als Wertepaaren. In einem zweiten Schritt splitte ich noch einmal am Gleichheitszeichen. Dadurch erhalte ich wiederum zwei Teile in einem Array:
-
mySingleCookieParts[0] entspricht der ID des INPUT-Elements das beim Laden gecheckt werden soll, weil das Cookie sich das so gemerkt hat.
-
mySingleCookieParts[1] entspricht dem zugewiesenen Wert. (In meiner neuesten Variante werden nur noch Checkboxen gemerkt, deren Checked-Wert auf „true“ steht)
Da der zugewiesene Wert allerdings auch ein String ist, und es in JavaScript keine Methode parseBoolean() gibt, konvertiere ich den String „1“ über parseInt() in eine Ganzzahl.
Das wäre jetzt in der letzten Version, wo ich mir nur noch die Checkboxen und Radiobuttons in Cookies merke, die auch tatsächlich gecheckt sind, wahrscheinlich gar nicht mehr nötig, weil ja alles, was als Zeichenkette nicht leer ist, sowieso als true interpretiert wird. Auch wenn ich das Zeichen „0“ jetzt nicht mehr habe, lasse ich das parseInt() hier aber lieber doch drin, es schadet ja auch nicht.

Gruß Gernot