Struppi: Bugs und Questions.

Beitrag lesen

Schreibe ich

<script> function eins(){ ...this...} </script>

dann ist this==self==window.

Alles im Skriptblocks ist im Kontext von window und self ist lediglich eine Eigenschaft von window die auf sich selbst zeigt.

Du musst mit dem this aufpassen, den im Body-Tag ist this nicht mehr self oder window, es ist tatsächlich nur innerhalb von <script> so.

function eins () {}
entspricht
window.eins = function() {};

this ist immer das aktuelle Objekt, also im Skriptblock ist es window, in der Funktion window.eins ist es auch window.

Mache ich stattdessen eine globale Variable zwei und hänge die Funktion als Methode hinein, ist this==zwei

... also das aktuelle Objekt, in dessen Kontext du auf this zugreifst.

<script>
  var zwei = {
   daten:    "",
   ptr:      null,
   eins:     function(){...this ....}
  }
</script>

....

Nur im <a> muss ich dann
  onclick="zwei.clicked(this);" href="javascript:zwei.goto();"
oder
  onclick="drei.clicked(this);" href="javascript:drei.goto();"
hinzaubern.

this ist in dem Fall das <a> Element, in dessen Kontext das Skript aufgerufen wird.

Struppi.