使用 setTimeout 滚动 div 的内容

Scrolling div's content with setTimeout

你们能告诉我这个脚本有什么问题吗? 它假设在延迟 20 秒后将父元素的内容滚动到子元素。 Parent 是没有滚动条的溢出隐藏滚动内容,但我认为这无关紧要。

编辑:打字错误并将#childelement 更改为 href。它仍然无法正常工作。我在它应该滚动的子元素中有 href 元素。

<script>
setTimeout(
function(){

var target = $( $(this).attr('href'));

if( target.length ) {
    event.preventDefault();
    $('#parentelement').animate({
        scrollTop: target.offset().top
    }, 1000);
}
},
20000
);
</script>

您在这一行中有语法错误:

var target = $( $(this).attr('#childelement');

你忘了关闭括号!!

var target = $( $(this).attr('#childelement'));

另一个语法错误,没有html属性可以调用#childelement

一些合法的 html 属性 class id href 等等

示例:

var className = $('.ClassName').attr('class');

对于您的任务,这就是您所需要的:

  setTimeout(function() {

    var target = $( $('a[href^="#"]').attr('href') );

    if( target.length ) {
        $('html, body').animate({
            scrollTop: target.offset().top
        }, 1000);
    }

    }, 2000);

LIVE DEMO

这将像您期望的那样在 2 秒后触发滚动动画。