2017-08-23 4 views
0

aufgerufen Ich habe viele Links auf meiner Web-Seite wie folgt verwendet:Dieses Schlüsselwort, wenn die Funktion von Hyperlink

<a href="javascript:Test.Test(this);">Testing</a> 

Mit this Stichwort Ich erwartete HTML-Element Eigentümer dieser Funktion zu erhalten. Aber es zeigt mir stattdessen window Objekt. Warum das? Wie bekomme ich (mit Code oben verwendet) HTML-Element, Besitzer dieser Funktion?

Auf meiner Webseite ist HTML-Struktur viel komplexer. Jeder Hyperlink befindet sich in einem anderen Element. Wenn this das aktuelle Element anzeigt, ist es einfach, das Elternelement zu erhalten.

var Test = function(){ 
 
    
 
    var Test = function(element){ 
 
    
 
    debugger; 
 
    
 
    } 
 
    
 
    return { 
 
    Test: Test 
 
    } 
 
}();
<div data-iuser_key='49499'> 
 
<a href="javascript:Test.Test(this);">Testing</a> 
 
</div>

+0

Das ist unmöglich. Sie sollten Ereignishandler verwenden. – SLaks

Antwort

1

Was hast du erwartet? Ihr Code wurde innerhalb von javascript: ausgeführt, der keinen Verweis auf das Zielelement enthält. Standardmäßig bezieht sich this auf window.

Verwenden Sie stattdessen einen richtigen Klick-Handler:

<a href="#" onclick="Test.Test(this)"> 
+0

Was bedeutet Javascript in diesem Fall? Browser Objektmodell? – FrenkyB

+0

'javascript:' ist ein herstellerspezifisches Präfix, das aus den alten Tagen stammt. Es ist nicht Teil einer Spezifikation, aber normalerweise wird "this" auf "window" bezogen. –

+0

In Ihrem Code habe ich href = '#' entfernt, weil es die Seitennavigation nach oben bewirkt. Ansonsten funktioniert alles wie erwartet und dies ist innerhalb der Funktion als Elementhalter der Funktion bezeichnet. – FrenkyB

Verwandte Themen