peterS.: selbstreferenzierung von js-objekten

Beitrag lesen

gruss Jürgen,

... Ich muss, um den Link auf die sort-Methode zu setzen,
wissen, wie das Objekt heißt. Mein momentaner Ansatz sieht
so aus:
...

mhh ... ein ansatzt, wenn auch ein dreckiger, eigentlich
   nicht zu empfehlender - und Daniel hat schon alles ueber
   das warum gesagt - waere dieser:

a) Du hast eine voll kontrollierbare statische umgebung,
      in dem sinne, dass es eine endliche anzahl von html-
      tabellen mit einem einheitlichen namens-schema ueber
      deren id-attribute gibt;
   b) eine initialisierungsfunktion fischt sich alle table-
      knoten aus dem DOM und prueft deren ids auf diese
      namenskonvention;
   c) fuer jede zum schema passende html-tabelle wird ein
      globales js-objekt erzeugt - nach dem jetzigen schema
      koennte das dann so aussehen:

var tableCollection = document.getElementsByTagName("table");
      if (tableCollection) {
        var i, node, varName, objCounter = 0;
        for (i=0; i<tableCollection.length; i++) {
          node = tableCollection[i]
          if (node.id && (node.id != "")/*&& weiter bedingungen*/) {
            varName = "tabelle" + objCounter;
            window[varName] = new JB_Table(node, .., varName);
          //hier werden globale variablen
          //mit dem namen "varName" erzeugt;
            objCounter ++;
          }
        }
      }

der konstruktor erhaelt dann statt der node-id gleich die
      dom-referenz auf den html-table und "varName" wird als
      name des gerade global zu erzeugenden "JB_Table"-objekts
      dem konstruktor zur weiterverwendung mitgegeben:

this.windowName = varName;

d) wenn jetzt link-text generiert werden soll, kann auf
      "this.windowName" zugegriffen werden - ungefaehr so:

linkText = "javascript:" + this.windowName + ".sort()";

was fuer z.b. "var Tabelle2 = new JB_Table(.., .., ..);"
      und einer methode "sort" fuer jedes "JB_Table"-objekt
      diesem hier entspraeche: "Tabelle2.sort();"

e) nocheinmal: sobald eine umgebung nicht in diesem masse
      gewaehrleistet werden kann, muss man sich Daniels argu-
      mentation beugen;

by(t)e by(t)e - peterS. - pseliger@gmx.net

--
sh:| fo:) ch:? rl:| br:& n3:} n4:# ie:| mo:{ va:| de:[ zu:] fl:) ss:) ls:& js:)