对于这个简短而毫无意义的标题感到抱歉,但它确实是唯一真正描述我问题的标题。
我想要(或必须)编写幻灯片的脚本(如果选中复选框并给出时间),则会自动将焦点切换到另一个图像上。 除了自动化之外,我已经拥有了所有东西,目前正在进行中。
我认为将当前时间与目标时间(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>
答案 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/