切换函数的Javascript计时器
我有三个名为toggle1、toggle2、toggle3的函数链接到我的html 我想制作一个计时器,以5秒的延迟调用每个函数,5秒用于测试 我写了这段代码,但不起作用。关于如何让它工作,有什么建议吗 我在页面加载时使用了函数init切换函数的Javascript计时器,javascript,timer,switch-statement,Javascript,Timer,Switch Statement,我有三个名为toggle1、toggle2、toggle3的函数链接到我的html 我想制作一个计时器,以5秒的延迟调用每个函数,5秒用于测试 我写了这段代码,但不起作用。关于如何让它工作,有什么建议吗 我在页面加载时使用了函数init function timer() { var i = 1; var delay = 5000; for (i, i = 3, i++) { switch (i) { case 1:
function timer() {
var i = 1;
var delay = 5000;
for (i, i = 3, i++) {
switch (i) {
case 1:
toggle1();
delay;
break;
case 2:
toggle2();
delay;
break;
case 3:
toggle3();
delay;
break;
}
}
}
第一个问题是for循环错误,将其更改为此应该可以让您开始:
for (var i = 0; i < 3; i++) {
此外,每个开关语句中的延迟变量是冗余的。首先尝试更改for循环,这将使您开始写入方向。您有两个基本的语法问题,这可能会导致问题 1 for循环的语法不以分隔,应该有
2应该有我你可以实施你自己的睡眠方法,并像这样使用它:
toggle1();
sleep(5000);
toggle2();
sleep(5000);
toggle3();
当然,这很简单/幼稚。尝试使用该函数
function init () {
timer(1);
}
function timer(n) {
var delay = 5000;
switch (n) {
case 1:
toggle1();
setTimeout(function(){ timer(2); }, delay)
break;
case 2:
toggle2();
setTimeout(function(){ timer(3); }, delay)
break;
case 3:
toggle3();
break;
}
}
var counter = 0;
function Toogle1() {
console.log("1");
}
function Toogle2() {
console.log("2");
}
function Toogle3() {
console.log("3");
}
function TimeMachine() {
switch (counter) {
case 0:
Toogle1();
counter++;
break;
case 1:
Toogle2();
counter++;
break;
default:
Toogle3();
counter = 0;
break;
}
}
setInterval("TimeMachine()", 1000);
而且使用延迟变量似乎也没用。@格林先生把我的答案改成了一个起点,我认为延迟应该是延迟;要使其工作,您的代码应该是这样的。这篇文章下面的评论不建议使用这种方法。你读过关于这个答案的评论了吗?这是唯一天真的部分!
var counter = 0;
function Toogle1() {
console.log("1");
}
function Toogle2() {
console.log("2");
}
function Toogle3() {
console.log("3");
}
function TimeMachine() {
switch (counter) {
case 0:
Toogle1();
counter++;
break;
case 1:
Toogle2();
counter++;
break;
default:
Toogle3();
counter = 0;
break;
}
}
setInterval("TimeMachine()", 1000);
delayedExec([toggle1, toggle2, toggle3], 5000);
function delayedExec(fns, delay, index) {
index = index || 0;
if (index === fns.length) return;
fns[index]();
setTimeout(delayedExec.bind(null, fns, delay, ++index), delay);
}
<html>
<head>
<script type="text/javascript">
var
hMsg,
CntFunc = {
curr: 0,
funcList: [],
play: function () {
CntFunc.funcList[CntFunc.curr]();
CntFunc.next();
},
next: function () {
if (CntFunc.curr >= CntFunc.funcList.length-1)
CntFunc.curr = 0;
else {
CntFunc.curr++;
setTimeout(CntFunc.play, 5000);
}
}
};
var toggle1 = function() {hMsg.innerHTML = "1";}
var toggle2 = function() {hMsg.innerHTML = "2";}
var toggle3 = function() {hMsg.innerHTML = "3";}
window.onload = function () {
hMsg = document.getElementById("msg");
CntFunc.funcList = [toggle1, toggle2, toggle3];
CntFunc.play();
}
</script>
</head>
<body>
<div id="msg"></div>
</body>
</html>