javascript - setTimeout 函数不起作用

标签 javascript settimeout

问题是它一直无休止地滚动,我试图使用 exit 终止它,但它不起作用,有什么解决方案吗?
了解更多

<script>
    var marginY = 0;
    var destination= 0;
    var speed = 10;
    var scroller = null;


    function initScroll(elementId)
        {
            destination= document.getElementById(elementId).offsettop;
            scroller = setTimeout(function(){initScroll(elementId);},1);
            marginY = marginY + speed;
            if(marginY >= destination)
            {
                clearTimeout(scroller);



            }
            window.scroll(0,marginY);
    }   


</script>

最佳答案

JavaScript 区分大小写!它是 offsetTop 而不是 offsettop:

destination = document.getElementById(elementId).offsetTop;
<小时/>

另一方面,我不确定这是如何运作的。如果您正在尝试平滑滚动,您还可以通过以下方式使用 jQuery:

$(document).ready(function(){
    $('a[href^="#"]').on('click',function (e) {
        e.preventDefault();

        var target = this.hash;
        var $target = $(target);

        $('html, body').stop().animate({
            'scrollTop': $target.offset().top
        }, 900, 'swing', function () {
            window.location.hash = target;
        });
    });
});

关于javascript - setTimeout 函数不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33984600/

相关文章:

javascript - JavaScript 在 html 页面上的位置重要吗?

javascript - 如何停止同名的嵌套超时?

javascript - 在 jQuery 中删除元素的问题

javascript - 如何从子表中查找带有外键的父表属性

javascript - 检查 ArrayBufferView 的实例?

javascript - react 触发调整大小但实际上不调整屏幕大小

javascript - graphql 突变中无法识别的参数

javascript - setTimeout 在 JavaScript 中未按预期工作

javascript - Node JS,完成后运行相同的功能

javascript setTimeout调用错误