クリックイベントで実行する必要がある関数があります。ただし、アンカー タグの 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に値がある場合は使用する必要がありますが、この理由でまたはのような他のオプションがあります。hrefreturn falseevent.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 は現在のウィンドウを表します。