Javascript setTimeout之后的setInterval将持续执行
我得到了检查某个元素右上角当前位置的代码:Javascript setTimeout之后的setInterval将持续执行,javascript,settimeout,setinterval,Javascript,Settimeout,Setinterval,我得到了检查某个元素右上角当前位置的代码: function checkContentPos(e) { var positionLeft = 0, checkTabPos = null, pos; e = $(e).filter('li'); alert($(e).attr('class')); //alert($(e).attr('class')); checkTabPos = setInterval( function
function checkContentPos(e) {
var positionLeft = 0,
checkTabPos = null,
pos;
e = $(e).filter('li');
alert($(e).attr('class'));
//alert($(e).attr('class'));
checkTabPos = setInterval(
function () {
ii++;
debug(ii);
pos = $(e).offset();
pos['left'] += parseInt($(e).css('width'));
positionLeft = pos.left;
debug(positionLeft);
}, 40);
function stopCheckTabPos() {
debug('stopCheckTabPos invoked')
clearInterval('checkTabPos');
}
setTimeout(stopCheckTabPos, 400);
return(positionLeft);
};
但我觉得它好像是在瞬间循环的。在setTimeout之后,它仍然不断地被调用
clearInterval('checkTabPos');
这里不要使用引号。那怎么行呢?您需要传入由setInterval
返回的标识符,而不是一些任意字符串。当您应该将其与变量一起使用时,您使用的是字符串'checkTabPos'
function stopCheckTabPos() {
debug('stopCheckTabPos invoked')
clearInterval(checkTabPos);
}
这太容易了。。。我花了一个小时的时间。谢谢嗯,也许有人能告诉我为什么不能访问positionLeft变量?在执行setInterval后,它仍然为零,但当它在函数中时,该值是正确的。
checkContentPos
末尾的返回发生在执行之前,而不是之后,因此positionLeft
为0
<代码>设置间隔
和设置超时
不阻止执行。清除间隔后,您需要由stopCheckTabPos
调用一些回调函数。