jobo: Checkboxen mit JS auslesen

Beitrag lesen

Hallo,

Falsch!

function MyClass(id) {

var elm = document.getElementById(id);
elm.onclick = function() { this.tu_was(); }; // this == elm
this.tu_was = function() { alert('hallo');};
}


>   
> Richtig:  
> ~~~javascript

function MyClass(id) {  

>  var elm = document.getElementById(id);  
>  var _this = this;  
>  elm.onclick = function() { _this.tu_was(); };  
>  this.tu_was = function() { alert('hallo');};  
> }  
> 

Einen Hundetrainer hörte ich sagen sinngemäß: "Ich unterscheide nicht zwischen Angst und Respekt. Für den Hund ist das das gleiche. Bzw. hat er nur Respekt, wenn er auch Angst vor mir hat (hatte und deshalb haben könnte).

Bei deinem Beispiel ist es ja sehr logisch. In Fall eins bezieht sich im geschachtelten Kontext this dann auf seine nächsthöhere Zugehörigkeit. Egal, ob die (also "elm") nun wiederum nur in einem anderen Kontext existiert oder nicht. Will ich das umgehen, muss ich das "this" im umgebenden Kontext dann halt umkopieren, damit ich einen Namen dafür habe, um darauf im inneren Kontext zugreifen zu können. Wenn du aber "elm" vorher eine tu_was-Methode zugefügt hättest, hätte auch Variante eins ein Ergebnis (;-).

Gruß

jobo