Marius: Objekt findet seine Eigenschaften nicht

Also ich habe folgendes gemacht:

Ich habe ein javascript-Objekt welches z.B als div dargestelt werden soll. Dann gehe ich hin und setze mit document.getElementById("asdasd").onclick=funktion; ein onclick-Event auf genau das div, welches zu diesem Objekt gehoert.
Die aufgerufene Funktion ist eine öffentliche Methode des Objekts, welches zu dem div gehört.

Allerdings findet er, falls man nun auf das div klickt, keine werte des Objekts, sondern hat diese alle als "undefined" gespeichert. Dies ist für mich ein Zeichen daür, dass er nicht das "richtige" Objekt findes sondern ein Neues anlegt.
Ich will aber mein urspüngliches Objekt haben!

Kennt jemand das Problem?
Hat jemand ne Lösung, oder liege ich mit meiner Annahmne falsch?
BTW: Ich entwickle ausschließlich mit/für Firefox, IE und andere sind egal.

  1. Hi,

    Allerdings findet er, falls man nun auf das div klickt, keine werte des Objekts,

    auf welche Weise suchst Du denn danach?

    sondern hat diese alle als "undefined" gespeichert. Dies ist für mich ein Zeichen daür, dass er nicht das "richtige" Objekt findes sondern ein Neues anlegt.

    Schade, es hat so gut angefangen. Es wird kein neues Objekt angelegt.

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Allerdings findet er, falls man nun auf das div klickt, keine werte des Objekts,
      auf welche Weise suchst Du denn danach?

      garnicht, mein objekt sieht in etwa so aus:

      function objekt(){
       this.id; //hält die Id des divs, das das objekt repräsentiert
       this.wert;
       this.create = function(id,wert){  //sowas wie der Konstruktor
        this.wert=wert;
        this.id=id;
       }
       this.func1 = function(){
        document.getElementById(this.id).onclick = func2;
       }
       this.func2 = function(){
        alert(id);
       }
      }

      sondern hat diese alle als "undefined" gespeichert. Dies ist für mich ein Zeichen daür, dass er nicht das "richtige" Objekt findes sondern ein Neues anlegt.

      Schade, es hat so gut angefangen. Es wird kein neues Objekt angelegt.

      ?????

      1. Hallo,

        function objekt(){
        this.id; //hält die Id des divs, das das objekt repräsentiert
        this.wert;

        Diese beiden Zeilen erfüllen keine Funktion.

        this.create = function(id,wert){  //sowas wie der Konstruktor
          this.wert=wert;
          this.id=id;
        }
        this.func1 = function(){
          document.getElementById(this.id).onclick = func2;

        func2 gibts hier gar nicht.

        Wenn du func2 schreibst, ist a) eine globale Variable oder b) eine Funktions-lokale Variable gemeint. Beides ist nicht der Fall.

        Du meinst this.func2.

        }
        this.func2 = function(){
          alert(id);
        }

        Beachte, dass func2 in dem Fall nicht im Kontext des Objektes ausgeführt wird, sondern im Kontext des Elementobjektes, bei dem der click-Event den Handler auslöst.

        Das ist in diesem Fall aber egal. Wenn du this.id schreibst, greifst du mit this auf das Elementobjekt zu und mit .id auf das entsprechende Attribut.

        Mathias

        1. berichtigter code:

          function objekt(){
           this.id; //hält die Id des divs, das das objekt repräsentiert
           this.wert;
           this.create = function(id,wert){  //sowas wie der Konstruktor
            this.wert=wert;
            this.id=id;
           }
           this.func2 = function(){
            alert(this.wert);
           }
           this.func1 = function(){
            document.getElementById(this.id).onclick = this.func2;
           }
          }

          Beachte, dass func2 in dem Fall nicht im Kontext des Objektes ausgeführt wird, sondern im Kontext des Elementobjektes, bei dem der click-Event den Handler auslöst.

          Gut, also habe ich durch einen doppelten Fehler alles wieder rausgehaun. =)
          Was ich natürlich möchte ist, func2 im Kontext des Objektes ausführen, damit ich z.B. die Variable this.wert finde.
          Geht das ?

          1. hi,

            Was ich natürlich möchte ist, func2 im Kontext des Objektes ausführen,

            Das brauchst du nicht.

            damit ich z.B. die Variable this.wert finde.
            Geht das ?

            http://aktuell.de.selfhtml.org/artikel/javascript/organisation/#closures, Abschnitt "Anwendung von Closures".

            var thisObject = this;
            erhält beim Anlegen des Objektes die Referenz auf dieses zugewiesen.
            Im späteren Methodenaufruf, der im Kontext des HTML-Elementobjektes, auf dem der Event auftrat, stattfindet, hast du dann über thisObject Zugriff auf die Eigenschaften und Methoden deines eigenen Javascript-Objektes.

            gruß,
            wahsaga

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