0

私のJSファイルでは、ある関数を別の関数から呼び出しています。最初は、名前だけを使用して引数なしで呼び出しました。handleResponse
次に、引数を追加しようとしました(もちろん、関数の署名を変更して)、何も得られなかったので、私は関数を as として呼び出してみましたがhandleResponse()、それでも機能しませんでした。
括弧や引数を使用して関数を呼び出せないのはなぜですか?

関数は次のとおりです。

function sendRequest()
{
    var username = "";
    var game_id = -1;
    username = document.getElementById("username").value;
    game_id = document.getElementById("game_id").value;
    req.open('GET', 'check_for_opponent.php?username='+username+'&game_id='+game_id);
    req.onreadystatechange = handleResponse(username, game_id); <--- THIS IS THE CALL
    req.send(null);
}

呼び出し : (私は体を変えました、それは無関係です)。

function handleResponse(username, game_id) {
if(req.readyState == 4) {
    // DO SOMETHING...
    }
}

}

4

2 に答える 2

3

その呼び出しを無名関数でラップする必要があります。

    req.onreadystatechange = function() {
      handleResponse(username, game_id); <--- THIS IS THE CALL
    };

投稿したコードは、割り当てが行われた時点でそのハンドラーを呼び出します。その代わりに、準備完了状態が変化したときに呼び出される関数を割り当てる必要があります。

于 2013-07-25T16:47:39.573 に答える