【发布时间】:2021-09-23 08:48:09
【问题描述】:
如果未单击搜索按钮,我将尝试在 20 秒后重新加载页面。如果它被点击,那么我希望每 20 秒进行一次搜索。
执行进入if-else 条件,但clearTimeout 似乎不起作用。
无论是否进行搜索,执行都会刷新整个页面。我做错了什么?
function init() //runs on application load
{
//some code
reload(false);
}
编辑:inti() 和 search(), reload() 位于单独的文件和单独的文件夹中。
function search() //runs when search button is clicked
{
//some code
reload(true);
}
function reload(isSearch)
{
var x = setTimeout( function () { window.location.reload() }, 20 * 1000);
var y = setInterval( function () { $('#searchButton').click() }, 20 * 1000);
if(isSearch)
{
clearTimeout(x);
}
else
{
clearInterval(y);
}
}
我还尝试检查x 和y 是否为undefined,但这也不起作用。请帮忙。
【问题讨论】:
-
如果你调用
reload(false),它永远不会取消超时,因为clearTimeout永远不会被调用 -
每当您调用 reload 时,都会启动另一个 x & y。所以
search时不能清除之前的x&y。希望有意义 -
searchButton 也是表单中的提交按钮吗?这也将重新加载页面并重新初始化超时和间隔
-
@mplungjan 它是一个
ImageButton在 aspx 文件中。 -
@nickzoum 很好,它就是这样工作的。我希望 clearTimeout(x) 在
reload(true)时运行,但它没有发生。
标签: javascript settimeout setinterval clearinterval cleartimeout