Klaus Junge: assoziative Arrays?

Hallo allerseits,

es ist mir ja peinlich, aber ich kriege es nicht mehr hin,
und finden tu' ich das auch nicht mehr.

Ich habe eine Reihe von Bildchen mit Namen:
<img src="..." name="punkt_erster"
<img src="..." name="punkt_zweite" ...

Ferner wollte ich ein Array bauen in dem mehrere Informationen
stehen, u.A. Stati, Namen, ein zweidimensionales Array also.

Außerdem wollte ich mit Namen auf die Einträge zugreifen,
so etwa: punkte[erster].status, punkte[zweiter].bildname ...
Ich glaube, Christine hat sowas mal 'assoziatives Array' genannt.

Natürlich will ich auch über eine indizierten Schleife zugreifen:
for(i = 0; i<length(punkte); i++)...

Klappen tut's nur nicht, nur indiziert kriege ich das gebacken.
Wie ging das noch?

Klaus

  1. Ich glaube, Christine hat sowas mal 'assoziatives Array' genannt.

    Natürlich will ich auch über eine indizierten Schleife zugreifen:
    for(i = 0; i<length(punkte); i++)...

    Klappen tut's nur nicht, nur indiziert kriege ich das gebacken.
    Wie ging das noch?

    Klaus

    Kann Dir jetzt erstmal nur kurz ein paar Bemerkungen zu assoziativen Arrays geben.

    Ist nach meinem Wissenstand nicht moeglich unter JavaScript

    Assoziative Arrays sind Feldvariablen die nicht nummerisch indiziert werden sondern ueber eine Stringkonstante
    D.h.
    Wenn ich auf ein "normales" array zugreife (nummeriertes)

    array[1]="Text";
    array[2]="noch Text";

    Den Inhalt finde ich ueber die Zahl

    Bei Assoziativen Arrays geht die Indizierung ueber ein String, und nur ueber ein String

    etwa so wuerde es aussehen (nur zum erklaeren)

    array[name] = "Schmitty";

    Assoziative Arrays lassen sich aber nicht ueber eine nummerischen index ansprechen

    gruss

    Curt

    1. Hallo allerseits,

      nachdem Curt mir den Zahn mit den assoziativen Arrays gezogen hat,
      hab' ich zur Abwechslung mal wieder bei Christine gewildert.
      Der folgende Konstrukt ist im Prinzip bei SelfHTML/wsuchen.js
      und SelfHTML/wdaten.js erräubert.

      Menu = new Array();

      Menu[0] = new Eintrag("erster",   "dot_erster",   "normal");
        Menu[1] = new Eintrag("zweiter",  "dot_zweiter",  "hell");
        Menu[2] = new Eintrag("dritter",  "dot_dritter",  "activiert");
        Menu[3] = new Eintrag("vierter",  "dot_vierter",  "warda");
        Menu[4] = new Eintrag("fuenfter", "dot_fuenfter", "normal");
        Menu[5] = new Eintrag("sechster", "dot_sechster", "hell");
        Menu[6] = new Eintrag("siebter",  "dot_siebter",  "activiert");
        Menu[7] = new Eintrag("achter",   "dot_achter",   "warda");

      function Eintrag(EintragName,BildName,Status)
        {
         this.EintragName = EintragName;
         this.BildName    = BildName;
         this.Status      = Status;
        };

      In diesem 'Array of Objects' (?) kann alles drinstehen was man
      für das Menu so braucht. Man kann es auch so erweitern, daß man
      per document.write() den HTML-code generieren kann.

      Der Zugriff auf die Menustruktur ist auch aus Schleifen heraus
      möglich. Die dabei auszuführenden Aktionen sind ansatzweise in
      der Struktur selbst beschrieben.

      function MenuAuffrischen(AktuelleSeite)
        {
         for(i = 0; i <= Menu.length; i++)
         {
          if (document.images)
             (top.frameunten.framemenue.document[Menu[i].BildName].src
              = eval(Menu[i].Status + '.src'));
         };
        };

      Ich bin mit den Versuchen noch nicht durch, aber bislang sieht
      es ganz passabel aus. Die kleinen Gemeinheiten werden sich aber
      wohl noch zeigen.

      Absicht ist es, den Pflegeaufwand möglichst nur auf eine Stelle
      zu konzentrieren. Wahrscheinlich sollte ich mich auch noch mehr
      mit Methoden beschäftigen.

      Klaus