web-dev-qa-db-ja.com

HTMLアンカーリンク-hrefとonclickの両方?

いくつかのJavaScriptを実行し、hrefがそれを使用していた場所に移動するアンカータグを作成したいと思います。 JavaScriptを実行し、window.locationまたはtop.locationhrefの場所に設定する関数を呼び出しても機能しません。

だから、ページにid "Foo"を持つ要素があると想像してください。次のようなアンカーを作成したい:

<a href="#Foo" onclick="runMyFunction(); return false;">Do it!</a>

これをクリックすると、runMyFunctionを実行し、ページを#Fooにジャンプします(リロードは発生しません-top.locationを使用するとページがリロードされます)。

提案?ここで役立つ場合は、jQueryを使用してうれしいです...

82
psychotik
<a href="#Foo" onclick="return runMyFunction();">Do it!</a>

そして

function runMyFunction() {
  //code
  return true;
}

この方法で、youf関数を実行し、リンクをたどり、関数が正常に実行された直後にリンクをたどります。

28
n1313

関数の実行が成功した場合にのみリンクが場所を変更する必要がある場合は、onclick="return runMyFunction();"を実行し、関数内でtrueまたはfalseを返します。

関数を実行したいだけで、アンカータグにその仕事をさせたい場合は、return falseステートメントを削除するだけです。

補足として、インラインJSは最適な方法ではないため、代わりにイベントハンドラを使用する必要があります。

7
peirix