幻灯片定时器什么都不做

时间:2013-11-06 19:37:33

标签: javascript

对于这个简短而毫无意义的标题感到抱歉,但它确实是唯一真正描述我问题的标题。

我想要(或必须)编写幻灯片的脚本(如果选中复选框并给出时间),则会自动将焦点切换到另一个图像上。 除了自动化之外,我已经拥有了所有东西,目前正在进行中。

我认为将当前时间与目标时间(currentTime +用户输入秒数(整数))进行比较,每1000毫秒就是最好的方法。 但是,我不明白为什么,但它不起作用。计算出的目标时间似乎是正确的,因为我得到了预先计算的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>

1 个答案:

答案 0 :(得分: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/