114

このJSFiddleの何が問題なのかわかりません。

HTML:

<input type="button" value="test" onclick="test()">

JavaScript:

function test(){alert("test");}

ボタンをクリックしても、何も起こりませんでした。コンソールに「テストが定義されていません」と表示される

私は JSFiddle のドキュメントを読みました - そこには、JS コードが追加され<head>、HTML コードが追加されたと書かれています<body>(したがって、この JS コードは html よりも前のものであり、動作するはずです)。

4

7 に答える 7

100

ラップ設定を指定しない場合、デフォルトで「onLoad」になります。これにより、結果がロードされた後に実行される関数にすべての JavaScript がラップされます。すべての変数はこの関数に対してローカルであるため、グローバル スコープでは使用できません。

ラッピング設定を「ラップなし」に変更すると、機能します。

http://jsfiddle.net/zalun/Yazpj/1/

フレームワークを使用しないため、フレームワークを「ライブラリなし」に切り替えました。

于 2011-04-29T09:36:44.197 に答える
60

関数はロードハンドラー内で定義されているため、スコープが異なります。@ellisbbenがコメントで指摘しているように、windowオブジェクトで明示的に定義することでこれを修正できます。さらに良いことに、ハンドラーを目立たないようにオブジェクトに適用するように変更します:http: //jsfiddle.net/pUeue/

$('input[type=button]').click( function() {
   alert("test");   
});

インラインではなく、この方法でハンドラーを適用すると、HTMLがクリーンに保たれることに注意してください。私はjQueryを使用していますが、必要に応じて、フレームワークの有無にかかわらず、または別のフレームワークを使用して実行できます。

于 2011-03-25T10:50:28.867 に答える
3

フレームワークと拡張パネルのラップ設定を「ラップインなし」に変更し<body>ます

于 2014-08-10T14:59:55.553 に答える
-1
<script> 
function test(){
 alert("test");   
}
</script>

<input type="button" value="test" onclick="test()">
于 2016-01-21T08:37:55.947 に答える
-1

コードに問題はありません。右側から拡張子 onLoad() を選択するだけです。

于 2014-09-12T09:32:38.937 に答える