スクリプトは実行するようonLoad
に定義されています。つまり、関数は期待どおりにグローバルスコープで使用できません。onLoad
これは、何らかのメソッド(jsFiddleが使用する方法)のローカルスコープで定義されます。この設定では、jsFiddleはコードを次のようなものに入れると思います。
window.onload = function () {
// Your code
};
(これはオプションに似ていonDomReady
ます)
これは、適切なイベントのバインドについて心配する必要がなく、スクリプトをテストするだけでよいためです(ページがロードされていることを確認してください)。
グローバルスコープにあると予想される関数を呼び出そうとすると、機能しません。左側の設定をno wrap (head)
(またはno wrap (body)
)に変更するだけです
http://jsfiddle.net/TmLut/3/
そして、mplungjanが指摘しているように、私はどういうわけかまったく気づいていませんでしたonclick
が、アンカー要素のを使用するときは、リンクのデフォルトの動作を防止したいと思うでしょう(「#」に移動するだけの場合でも)。いくつかの方法で達成できますが、1つは次のとおりです。
<a href="#" onclick="runFunction();return false;">Text</a>
同時に、インラインハンドラーを使用するべきではなく、イベントをJavascriptで完全にバインドする必要があると主張する人もいるかもしれません。その場合に応じて、デフォルトの動作を引き続き防止するオプションがあります。いずれの場合でも、event
オブジェクトを取得して(ブラウザーごとに正規化されています...ちなみに、jQueryが実行します)event.preventDefault();
、メソッドを呼び出すことができます。