0

onclick 属性でボタンに関数を登録し、この関数を $() ブロックで定義します (これは悪い習慣であり、単なる例です)、ボタンをクリックするとエラーが発生します: Uncaught ReferenceError:こんにちは定義されていません。これが私のコードです:

<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script type="text/javascript">
$(function(){
    function hello(){
        alert('hello');
    }
});
</script>
</head>
<body>
<input type="button" id="btn" value="click" onclick="hello()"/>
</body>

$() ブロックの外に hello 関数コードを配置すると、機能します。DOM が解析されるときに $() が実行されることはわかっています。ボタンをクリックすると、DOM は既に解析されているはずですが、なぜエラーが報告されるのでしょうか? ありがとう。

4

2 に答える 2

2

コードは、helloがグローバル関数であると想定していますが、そうではありません。

$(function(){
    function hello(){
        alert('hello');
    }
    $("#btn").click(hello);
});
于 2013-03-18T13:30:47.963 に答える
1

ブロック内で実行される(定義されていない)関数$.readyは、DOMにアクセス/操作する準備ができた後に実行されることが保証されていることを除いて、違いはありません。

あなたの問題はスコーピングの1つです。イベントが処理されているグローバルスコープではアクセスできないローカル関数を作成しました。

于 2013-03-18T13:30:36.437 に答える