我的php页面上有一个简单的javascript循环,每秒只增加一个值。好吧,循环每秒运行一次,并递增值。
var test = 0;
function go() {
test = test + 1;
setTimeout(go, 1000);
}
go();
这很好用。
问题是,运行的PHP页面实际上位于每10秒刷新一次的div标记内。 10秒后,计数变得混乱,每秒加2,然后是3,然后是4,等等。
我该怎么办?
答案 0 :(得分:2)
鉴于问题似乎是您的函数的多个实例正在运行,每次刷新/更新页面时都会增加,我建议在您的函数中添加一个完整性检查:
var test = 0;
var running = running || false;
function go() {
if (running) {
// if an instance of go() is already running, the function quits
return false;
}
else {
running = true; // as the test variable survives I assume this will, too
test = test + 1;
setTimeout(go, 1000);
}
}
go();
由于每次页面更新时test
可能会被覆盖,我建议确保分配不会覆盖预先存在的计数:
var test = test || 0;
var running = running || false;
function go() {
if (running) {
// if an instance of go() is already running, the function quits
return false;
}
else {
var running = true; // as the test variable survives I assume this will, too
test = test + 1;
setTimeout(go, 1000);
}
}
go();
请记住,您可以简单地使用test
变量的存在来确定该函数当前是否正在运行,但因为我不知道您是否将其用于其他目的我已经选择为此目的创建另一个变量(应该包含true
或false
布尔值。
答案 1 :(得分:1)
将go()
更改为if(!test){ go() }
您还必须修补test
变量。所以var test = test || 0;