1

ユーザーが入力実行で毎回カウントダウンをリセットした後、追加したいのですclearTimeoutが、機能しません。私は何をしますか?(私のコードで私を助けてください、私は新しいコードが欲しくありません。)

デモ:http: //jsfiddle.net/qySNq/

HTML:

<input id="MizMah">
<div id="Seconds" style="font-size: 80px;">5</div>​


Jsコード:

$('#MizMah').live('keyup', function () {
    function render(n) {
        var digits = [],
            r;
        do {
            r = n % 10;
            n = (n - r) / 10;
            digits.unshift([r].join(''));
        } while (n > 0);
        $('#Seconds').html(digits.join(''));
    }

    (function timer(current) {
        render(current);
        if (current > 0) {
            myTimeout = setTimeout(function () {
                timer(current - 1);
            }, 1100);
            clearTimeout(myTimeout);
        }
    }(5));
})​
4

1 に答える 1

2

設定直後にタイムアウトをクリアしていました。これを試して:

var myTimeout = null;

$('#MizMah').live('keyup', function () {
    function render(n) {
        var digits = [],
            r;
        do {
            r = n % 10;
            n = (n - r) / 10;
            digits.unshift([r].join(''));
        } while (n > 0);
        $('#Seconds').html(digits.join(''));
    }

    (function timer(current) {
        render(current);
        if (current > 0) {
            clearTimeout(myTimeout);
            myTimeout = setTimeout(function () {
                timer(current - 1);
            }, 1100);
        }
    }(5));

})
于 2012-09-04T22:17:40.087 に答える