クリックイベントで実行する必要がある関数があります。ただし、アンカー タグの onclick 属性では問題なく動作しますが、HREF 属性では動作しません。それは未定義のIDを与えています。ここにデモコードがあります
HTML
<a href="javascript:test(this)" id="first">click</a>
JS
function test(obj){
alert(obj.id)
}
クリックイベントで実行する必要がある関数があります。ただし、アンカー タグの onclick 属性では問題なく動作しますが、HREF 属性では動作しません。それは未定義のIDを与えています。ここにデモコードがあります
HTML
<a href="javascript:test(this)" id="first">click</a>
JS
function test(obj){
alert(obj.id)
}
this
そのコンテキストではwindow
、コントロールではなく です。に JavaScript を配置することhref
は、 のようなイベント ハンドラと同じではありませんonclick
。ここにフィドルがあります。
ここに修正があります:
<a href="#" onclick="javascript:test(this);" id="first">click</a>
この質問にはすでに回答がありますが、質問で使用した関数を使用する場合は、次のように使用する必要があります
HTML:
<a href="http://heera.it" onclick="return test(this.id)" id="first">click</a>
JS:
function test(obj){
alert(obj);
return false; // this is required to stop navigation to that link
}
注意、この例のようreturn false
に値がある場合は使用する必要がありますが、この理由でまたはのような他のオプションがあります。href
return false
event.preventDefault()
event.returnValue = false (for IE)
Matt Kruse の Javascript Best Practices の記事を楽しみました。その中で彼は、href
セクションを使用してJavaScript
コードを実行するのは悪い考えだと述べています。
アンカーで javascript を呼び出すためのいくつかの良い方法を次に示します。
<a href="javascript:;" onClick="return DoSomething();">link</a>
<a href="javascript:void(0);" onClick="return DoSomething();">link</a>
<a href="#" onClick="return DoSomething();">link</a>
アンカータグの onclick イベントを使用します。この内部の href は現在のウィンドウを表します。