2012-02-09 3 views
2

を使用してjavascript関数でこのパラメータ私は、コード<a href="javascript:someFunction(this);" tabindex="0">Some text</a>パスHREF

を持っているが、それはsomeFunction(link) {...}に要素を渡し、後でそれを使用することが可能です。

デバッグモードではオブジェクトが表示されますが、すべてのプロパティは未定義です。

<a onClick="javascript:someFunction(this);のようなonClick属性を使用していたとき、正常に動作しました。

これはおそらく最善の解決策ではないと私は知っていますが、私は他の質問を見ましたが、実際には今のところ私の問題ではありません。私はこのようにしなければならない理由は数多くあります。

ありがとうございました

+0

それを試しましたか?それを試してみて、それが動作するかどうかを確認してください。それは私には正しいように見えます。 –

+1

インラインJavaScriptをしないでください!言い訳はしないでください。 – Mathletics

+3

'onclick'はイベントをトリガするため、' this'パラメータを持ちます。 'href'はしません。 – Blender

答えて

2

、あなたがあなたのリンクにイベントを添付することができます(そうでない場合は、この答えを無視):

$('#id_of_your_link').on('click', function(event) { 
    event.preventDefault(); 
    someFunction(this); 
}); 

このコードは、キーボードナビゲーションとマウスクリックの両方のために動作します: http://jsbin.com/ufapor。あなたはここでソースコードを見ることができます:http://jsbin.com/ufapor/edit#javascript,html

+0

彼は私の答えだと思われます。私はこのようにすることはできません。http://jsbin.com/ufapor/4/edit#javascript,html非常に役に立ちます。 – eomeroff

2

Ok ...ここで何が起こったのか分かります。問題は、onclickイベントをトリガするときに、関連する要素があることです。したがって、thisを渡して関数内で参照することができます。しかし、hrefを使用するときは、現在の場所をその中の何かに設定しています。href。アドレスバーに入力してEnterキーを押した場合と同じです。したがって、その関数thisを渡すと、実際にはDOMWindowオブジェクトを参照しています。私が見ることのできる唯一の方法は、代わりにノードのidをプレーンテキストとして関数に渡すことです。それからgetElementByIdでそれをつかみなさい。

あなたのやり方を再考することを強くおすすめします。あなたはjQueryのを使用して気にしない場合は

+0

私はこれを解決しました。 – eomeroff

関連する問題