我正在使用JQuery-1.64,这是我重置计时器的代码
var message="Logged in";
var myTimeout = setTimeout("timerDone()",1000 * 1440);
function timerDone()
{
message="Logged out";
}
function timerReset()
{
clearTimeout(myTimeout);
myTimeout = setTimeout("timerDone()", 1000 * 1440);
}
但是当我尝试执行clearTimeout时,它只会在IE中出现错误。 任何想法????
答案 0 :(得分:34)
我不知道为什么但它对我有用。如果你有像
这样的评论//Comment
然后它给出了这个错误。要解决此问题
/*Comment*/
没有意义,但它对我有用。
答案 1 :(得分:32)
所有错误80020101意味着在评估JavaScript时存在某种错误。如果您通过Ajax加载JavaScript,评估过程就特别严格。
有时删除 // 会解决问题,但反之则不正确......问题并不总是由 // 引起。
查看Ajax调用返回的确切JavaScript,并查找该脚本中的任何问题。有关详细信息,请参阅此处的精彩文章
http://mattwhite.me/blog/2010/4/21/tracking-down-error-80020101-in-internet-exploder.html
答案 2 :(得分:5)
将整个代码块包装在此:
//<![CDATA[
//code here
//]]>
还要确保将脚本类型指定为text / javascript
尝试一下,让我知道它是怎么回事
答案 3 :(得分:2)
如果使用IE9,请关闭兼容性视图。
答案 4 :(得分:0)
什么时候调用timerReset()?也许你在setTimeout()已经完成它之后尝试调用它时会出现错误?
将其包装在
中if (window.myTimeout) {
clearTimeout(myTimeout);
myTimeout = setTimeout("timerDone()", 1000 * 1440);
}
编辑:实际上,经过进一步反思,因为你确实提到了jQuery(但是这里没有任何实际的jQuery代码......我想知道你是否将这个嵌套在一些jQuery中(比如在$(document).ready(..
内部)这是一个可变范围的问题。如果是这样,试试这个:
window.message="Logged in";
window.myTimeout = setTimeout("timerDone()",1000 * 1440);
function timerDone()
{
window.message="Logged out";
}
function timerReset()
{
clearTimeout(window.myTimeout);
window.myTimeout = setTimeout("timerDone()", 1000 * 1440);
}