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 回答