0

短くて意味のないタイトルで申し訳ありませんが、実際に私の問題を説明しているのはこれだけです。

(チェックボックスをオンにして時間を指定すると) 自動的にフォーカスを別の画像に切り替えるスライドショーのスクリプトを作成したい (または作成する必要がある)。私はすでに自動化以外のすべてを持っており、現在それに取り組んでいます。

1000 ミリ秒ごとに現在の時刻を目標時刻 (currentTime + ユーザー入力の秒数 (整数)) と比較するのが最善の方法であると考えました。ただし、理由はわかりませんが、機能していません。事前に計算された date.getTime() と計算されたものとの正しい差が得られるため、計算された目標時間は正しいようです。

あなたが私を助けることができれば、私は非常に感謝しています.

JS は次のとおりです。

var checkbox_checked;

function timerfn() {
    if (checkbox_checked === null || checkbox_checked === false) {
        checkbox_checked = true;
        var targetTime = new Date();
        alert(targetTime.getTime());
        var target_sec = targetTime.getSeconds() + dauerSwitch;
        targetTime.setSeconds(target_sec);
        alert(targetTime.getTime());

        // update currentTime every 1 Seconds (1000 Milliseconds)
        setInterval(function () {
            var current_time = Date.now();

            if (targetTime.getTime() == current_time) {
                gallery("zur");
            }
        }, 1000);
    } else {
        checkbox_checked = false;
    }
}

HTML は次のとおりです。

<form>
    <input type="checkbox" id="timer" name="timer" onClick="timerfn()">
    <input type="text" id="textbox" name="timerParam"
        placeholder="Seconds between slides" value=""
        onBlur="boxConv()"> //boxConv just converts the String to an Integer. It also checks if it's only numbers
</form>
4

1 に答える 1

1

これが、jquery ($) の助けを借りて行う方法です。インライン コードを JS イベント リスナーに移動し、ユーザー入力を間隔のパラメーターとして使用して機能させました。

$(function () {
    var intervalTime = 1000,
        counter = 1,
        interval;

    $("#textbox").on("blur", function () {
        var inputValue = $(this).val();

        try {
            //parses the user input into a integer
            intervalTime = parseInt(inputValue, 10) * 1000;
        } catch (e) {
            //could not parse input
        }
    });

    $("#timer").on("click", function () {
        if ($(this).is(":checked")) {
            interval = setInterval(function () {
                //gallery("zur");

                //fills the test output
                $("#testOutput").val(counter);
                counter++;

            }, intervalTime); //intervall time is given in milliseconds
        } else {
            clearInterval(interval);
        }
    });    
});

そして、ここに実際の例へのリンクがあります: http://jsfiddle.net/9Yeuh/2/

于 2013-11-06T20:34:16.403 に答える