setTimeout函数不起作用

时间:2015-11-29 15:42:50

标签: javascript settimeout

问题是它一直无休止地滚动,我试图使用退出来终止它,但它不起作用,任何解决方案?     
          学到更多          

<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>

1 个答案:

答案 0 :(得分:3)

JavaScript CaSe SeNsItIvE !它是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;
        });
    });
});