var time = 0;
function time(){
setInterval(time++, 500);
if (time > 1800){
time = 0;
}
setInterval(alert("The time is" + time), 500);
}
我试着创建一个基于每15分钟半秒的计时系统。不幸的是,我不能测试,因为第二个setInterval
没有运行。
我想这是由于代码没有继续运行,因为setInterval
一直循环。
我想狭义的问题应该是如何让这三个程序同时运行。
更广泛的将是一个程序如何面向对象?
你的代码有很多问题....
首先,你有一个名为time的变量和一个名为time的函数…这会给你带来没完没了的麻烦。
第二,setInterval
的第一个参数必须是一个函数(或一个字符串,但我犹豫甚至提到,因为这是一个坏主意,我不想鼓励它)。
第三,除非您稍后在某个地方实际调用time()
(您没有在代码中显示它),否则setInterval
调用都不会被执行。
你可以这样重写你的代码:
var _time = 0;
function time() {
_time++;
if(_time > 1800) _time = 0;
setTimeout(function() { alert('The time is ' + _time); }, 500);
}
setInterval(time, 900000); // 900000 ms = 15 minutes
setInterval的第一个参数必须是一个函数!这样的:
var time = 0;
function time(){
setInterval(time++, 500);
if (time > 1800){
time = 0;
}
setInterval(function() { alert("The time is" + time)}, 500);
}
你有第二个问题,你是分配time
为零,然后分配给一个函数,然后增加它(设置它NaN),然后比较它到1800(这将失败)。我认为你需要两个变量:timeCounter
和timeFunction
。
var timeCounter = 0;
function timeFunction(){
timeCounter++;
if (timeCounter > 1800){
timeCounter = 0;
}
alert("The time is" + timeCounter);
setInterval(timeFunction, 500);
}
但是如果你运行这个函数,你会非常抱歉,因为它会一直弹出警告,直到你关闭窗口(在弹出窗口之间的半秒间隔)
首先,时间是个变量,时间是个函数==>那就错了。===>重命名函数。
其次:
setInterval (first, seconde)的第一个参数应该是一个函数。
var time = 0;
function timefn(){
setInterval(function() { time++}, 500);
if (time > 1800){
time = 0;
}
setInterval(function() { alert("The time is" + time)}, 500);
}
如果你想要一个被执行的代码,让函数名:
function time(){
setInterval(function() { time.time++}, 500);
if (time.time > 1800){
time.time = 0;
}
setInterval(function() { alert("The time is" + time.time)}, 500);
}
time.time = 0;
这是因为函数可以作为对象使用>因此,我们为time
对象(函数)添加新属性,并将其称为time