setTimeout经常执行后的setInterval

时间:2012-12-31 00:52:34

标签: 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 () {
            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之后,它仍然被不断调用。

2 个答案:

答案 0 :(得分:1)

 clearInterval('checkTabPos');

请勿在此处使用引号。怎么会这样呢?您需要传入setInterval返回的标识符,而不是一些任意字符串。

答案 1 :(得分:1)

当您使用变量

时,您正在使用字符串'checkTabPos'调用clearInterval
function stopCheckTabPos() {
    debug('stopCheckTabPos invoked')
    clearInterval(checkTabPos);
}