我的目标是将用户保持在视图中,只要他/她继续在一定的失误中单击一个按钮。
我正在使用导轨,正在相关视图中通过嵌入式JS探索解决方案。
到目前为止var delayedRedirect = function (){
window.location = "/";
}
var delay = 10000;
$(document).ready(function() {
setTimeout('delayedRedirect()', delay);
});
我一直在尝试编写一个重置" delay"或再次调用settimeoutfunction的值的函数。
$('#btn-persist').click(function() {
delay = 3000;
// or calling again setTimeout('delayedRedirect()', delay);
});
,但我注意到更改变量不会影响已经调用的Settimeout函数。
我还尝试使用下面的cleartimeout函数而没有成功
var delayedRedirect = function (){
window.location = "/persists";
}
var delay = 3000;
var triggerRedirect = function() { setTimeout('delayedRedirect()', delay);
}
var stopRedirect = function (){
clearTimeout(triggerRedirect);
}
$(document).ready(function() {
triggerRedirect();
$('#btn-persist').click(function() {
stopRedirect();
});
});
我想知道为什么这可能不起作用,以及是否有其他方法可以停止已被调用的Settimeout函数执行,以便我可以再次称呼它以有效地将时间重置为"延迟"的原始值。
同时,我不想停止并行运行的任何其他JS函数。
您看到了一个更好的解决方案来实现这一目标吗?
为什么ClearTime Out不起作用的主要问题。因为您正在清除匿名函数,而不是settimeout变量
更改此
var triggerRedirect = function() { setTimeout('delayedRedirect()', delay);
}
到这个
var triggerRedirect = setTimeout('delayedRedirect()', delay);
编辑:还要更改此(如果要重新启动无活动重定向触发器)
)$('#btn-persist').click(function() {
stopRedirect();
});
到这个
$('#btn-persist').click(function() {
stopRedirect();
triggerRedirect();
});