Jo: globale Variable erhalten

Hallo,

ich habe verschiedene divs auf meiner Seite und kann diese über die funktion toggleDiv(elem) ein- und ausschalten. Funktioniert wunderbar (verwende Funktionen von Prototype).
In einer Globalen Variablen (toggleAr) speichere ich den Anfangszustand ob der Layer sichtbar ist oder nicht (onLoad="init();") und ändere gleichzeitig beim An- und Ausschalten der divs  dieses Array. Funktioniert auch wunderbar.
Wie kann ich den Wert der globalen Variable beim User erhalten, wenn ich die Seite über ein Formular verschicke oder aus einem Frame neu lade (der Zustand/Sichtbarkeit der Layer soll dabei erhalten bleiben)?

toggleAr = new Array("Layer1","Layer2");

function init(){
for (i=0; i<toggleAr.length; i++){
 toggleDivinit(toggleAr[i]);
}
}

function toggleDivinit(elem){
if ($(elem).getStyle('display') == 'none'){
$(elem).show();
}
else {
$(elem).hide();
}
}

function toggleDiv(elem){
if ($(elem).getStyle('display') == 'none'){
$(elem).show();
toggleAr.push(elem);
}
else {
$(elem).hide();
toggleAr.splice(toggleAr.indexOf(elem),1);
}
}

Danke Jo

  1. hi,

    Wie kann ich den Wert der globalen Variable beim User erhalten, wenn ich die Seite über ein Formular verschicke oder aus einem Frame neu lade (der Zustand/Sichtbarkeit der Layer soll dabei erhalten bleiben)?

    Da du ein vollkommen neues Dokument lädst, sind die im ursprünglichen Dokument bekannten Variablen natürlich futsch.

    Cookies wären eine Möglichkeit zur "Sicherung" von Daten über die Lebenszeit einer Seite hinaus.
    window.name wäre eine andere - allerdings bekommst du da vermutlich sehr leicht Probleme mit Werten, die in einem Fensternamen nicht erlaubt sind.

    Und in beiden kannst du natürlich nur Strings ablegen, und keine Javascript-Objekte - es wäre also irgendeine Art von Serialisierung erforderlich.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
  2. Hallo,

    Wie kann ich den Wert der globalen Variable beim User erhalten, wenn ich die Seite über ein Formular verschicke oder aus einem Frame neu lade (der Zustand/Sichtbarkeit der Layer soll dabei erhalten bleiben)?

    Entweder, indem du die entspr. Variablen als GET-Variablen an den URI (bzw. die Verweise) hängst, oder ein Cookie speicherst.

    Diese kannst du dann beim Laden der Seite auslesen.

    mfg. Daniel