Tuschi: dynamische Variablen und Methoden

Hallo, vielleicht weiß das jemand ...
schon einmal vielen Dank an Die die sich damit beschäftigen.

Also meine frage:
if (document.diashow.party_2006_07.checked == true){on++;var party_2006_07=1;}

wie bekomme ich es hin bei "party_2006_07" die _07 von _00 bis _07 in einer Schleife hoch zu zählen?

schleife start

if (document.diashow.party_2006_0[i].checked == true){on++;var party_2006_0[i]=1;}

schleif ende

  1. Hallo,

    if (document.diashow.party_2006_07.checked == true){on++;var party_2006_07=1;}

    wie bekomme ich es hin bei "party_2006_07" die _07 von _00 bis _07 in einer Schleife hoch zu zählen?

    http://de.selfhtml.org/javascript/objekte/elements.htm#allgemeines, Schema 4
    »Sie können zwischen den eckigen Klammern auch eine String-Variable notieren, die den Formularnamen bzw. den Elementnamen enthält.«

    Du kannst also über
    document.forms["diashow"].elements[party_2006_0" + i]
    die verschiedenen Formularelemente ansprechen, i ist dann die Zählvariable von 0 bis 7.

    Die globalen Variablen party_2006_00 bis party_2006_07 würde ich in einem Array speichern, also:
    var party_2006 = new Array();
    Und dann jeweils party_2006[i] = true.

    Mit
    window["party_2006_0" + i]
    könntest du aber auch globale Variablen anlegen, die party_2006_00 bis party_2006_07 heißen. Das würde ich aber zu vermeiden suchen, wahrscheinlich reichen lokale Variablen.

    Mathias

    --
    »No nations, no borders.«
    SELFHTML Weblog
  2. Hallo,

    Dazu ist wohl die funktion eval() gedacht. Ich habe genau das was du machen willst erst letzten im JavaScript Buch gelesen

    Grüße
    Jeena Paradies

    1. Hallo,

      Dazu ist wohl die funktion eval() gedacht. Ich habe genau das was du machen willst erst letzten im JavaScript Buch gelesen

      Aaaah, bitte nicht. Dieses Buch ist in vielerlei Hinsicht fehlerhaft und veraltet, daher mit Vorsicht zu genießen. Isbesondere dieser Absatz ist Unsinn und stellt eine übliche, aber gänzlich unvernünftige Anwendung von eval() vor. Genau für solche Anwendungen ist eval() weder gedacht noch gut geeignet.

      Erstmal, wenn ich die Monatsnamen speichern will, nehme ich sinnigerweise einen Array und nicht 12 einzelne Variablen. Auf die Arrayelemente kann ich dann ganz einfach ohne eval() zugreifen.

      Wenn ich aber unbedingt zwölf Einzelvariablen will, brauche ich eval() trotzdem nicht. Jede globale Variable ist ein Member des window-Objektes, und Unterobjekte kann man immer sowohl über die Punkt-Schreibweise objekt.unterobjekt als auch über die Klammer-Schreibweise objekt["unterobjekt"] ansprechen. Also kann ich window["monat" + m] statt eval("monat" + m) schreiben (wenn es sich um eine globale Variable handelt). Das ist viel performanter (Efficient JavaScript: Avoid using eval or the Function constructor).

      Mathias

      --
      »No nations, no borders.«
      SELFHTML Weblog
      1. Hallo,

        Jo, lustigerweise hatte ich das, bevor ich dieses Buch zufällig angelesen hatte, immer mit einem Array gemacht. Aber dann weiß ich jetzt was ich von diesem Buch halten soll.

        Grüße
        Jeena Paradies

  3. Ok ... ich habe es geschaft :-)) suppi :-)))
    Lösung:

    for (i=0; i <= anzahl; i++){if (document.getElementById("party_2006_0"+i+"").checked == true){on++;cook_2006+='p_2006_0'+i+'=1';}}
    _______________________________________________________________

    Hallo, vielleicht weiß das jemand ...
    schon einmal vielen Dank an Die die sich damit beschäftigen.

    Also meine frage:
    if (document.diashow.party_2006_07.checked == true){on++;var party_2006_07=1;}

    wie bekomme ich es hin bei "party_2006_07" die _07 von _00 bis _07 in einer Schleife hoch zu zählen?

    schleife start

    if (document.diashow.party_2006_0[i].checked == true){on++;var party_2006_0[i]=1;}

    schleif ende

    1. Vielen Dank für eure Hilfe ...
      Geile Ideen und Anregungen dabei gewessen