1

たとえば、次のようにコードをフォーマットする場合

<script type="text/javascript">
    var timeout;
    function auto() {
        $.ajax({
                url: "functions/ajax.php",
                data: "func=auto",
                type: "GET",
                dataType: "json",
                success: function(data){
                       $.each(data.search, function (i, v) {
                               console.log('Success ' + v);
                       });
                },
                error: function (jqXHR, textStatus, errorThrown){
                       console.log('Error ' + jqXHR);
                }
        });
     }

    function start() {
    timeout = setTimeout('auto()', 2000);
    }

    function stop(){
        clearTimeout(timeout);
}
</script>

var timeoutmyが value で定義されていないことは重要ですか? 実際のタイムアウトは処理されていないため、関数auto()を一度実行してから停止します

4

1 に答える 1

2

まず、setTimeout で引用符を使用しないでください (よくわかりませんが、 が呼び出されると思いますeval())。参照によって関数を渡すだけsetTimeout(auto, 2000)です。

第二に、JavaScript は動的に型付けされる言語です。つまり、変数の型は固定されておらず、状況に応じて変化する可能性があるため、コードは完全に有効です。

最後に、カウント中にタイムアウトを中止する予定がない場合は、実行後に消えるため、クリアする必要はありません。

于 2013-03-12T19:16:05.250 に答える