不断执行setTimeout后的setInterval

setInterval after setTimeout is executed constantly

本文关键字:后的 setInterval setTimeout 执行      更新时间:2023-09-26

我有代码检查一些元素右上角的当前位置:

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);
    };

但是I看起来是循环到即时的。setTimeout之后,它仍然会被不断调用。

 clearInterval('checkTabPos');

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

你调用clearInterval与字符串'checkTabPos'时,你应该使用它与变量

function stopCheckTabPos() {
    debug('stopCheckTabPos invoked')
    clearInterval(checkTabPos);
}