几点建议:
1)由于您正在尝试访问 dom 元素,因此最好检查该元素是否存在于 DOM 中。
由于您已经在使用 jQuery,因此建议将所有这些代码包含在
$(document).ready()
.
2)从内存clearTimeout
中删除t
这种情况下的引用,以后对它的任何引用都将导致不可预知的结果。t
如果您想timeout
在某个时候从元素中清除 ,则实际使用该变量。
3) 以字符串形式传递值timedCount()
意味着 JS 必须应用一个 eval 来获取它的值,在这种情况下它指的是一个函数。http://www.jslint.org。JS 标准要求避免使用 eval。最好在这里使用匿名函数,然后调用所需的函数timedCount()
。
4)就另一种实现而言,它实际上取决于您希望如何以及何时stopCount()
调用您的函数。在您的实现中,它实际上永远不会被调用,因为它会在 1 秒后继续调用相同的函数。
所需的代码可能类似于
function timedCount()
{
// the first 2 lines doing something
t = setTimeout(function()
{
// if clear time out logic
if ( can_clear_timeout() )
{
stopCount();
}
else
{
return timedCount();
}
}, 1000);
}
5)另一个警告是不应该使用全局变量,timer_is_on
因为它违反了标准。