2017-08-23 3 views
0

から呼ばれるこのキーワード:私はその関数のHTML要素の所有者を取得するために期待していた機能が、私はこのように使用私のWebページ上の多くのリンクを持っているハイパーリンク

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

キーワードthisで。しかし、それは私の代わりにwindowオブジェクトを示しています。何故ですか?どのようにして(上記のコードで)HTML要素、その関数の所有者を得ることができますか?

私のウェブページでは、HTMLの構造ははるかに複雑です。すべてのハイパーリンクが他の要素の中にあるので、thisが現在の要素を表示している場合、親要素を取得するのは簡単です。

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

代わりに、適切なクリックハンドラを使用します。イベントハンドラを使用する必要があります。 – SLaks

答えて

1

あなたは何を期待したのですか?あなたのコードはjavascript:の中で実行されましたが、ターゲット要素への参照はありません。デフォルトでthiswindowを指します。不可能であることを

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

この場合、javascriptは何を意味しますか?ブラウザオブジェクトモデル? – FrenkyB

+0

'javascript:'は、古い時代から残されたベンダー固有の接頭辞です。これは仕様の一部ではありませんが、通常は 'this'は' window'と呼ばれます。 –

+0

あなたのコードでは、href = '#'を削除しました。なぜならページのナビゲーションが一番上にあるからです。それがなければ、すべてが期待どおりに機能し、これは関数の要素ホルダーと呼ばれる関数の中にあります。 – FrenkyB

関連する問題