2016-02-11 66 views
0

我在我的项目中有一个可折叠的div,一旦用户点击它并展开,我需要它向下滚动计算机,以便用户知道文本在那里。 div工作的扩展,但是因为它试图自动扩展(在div展开之前),并且因为这是页面的底部(在div打开之前)它不会滚动。所以我想要做的就是将3秒的延迟放入我的Javascript中,以便在Div开放之前不会尝试这样做。我无法让它工作。这是我目前的代码:Javascript运行3秒后

<script language="Javascript"> 


    function scrollRefund() { 
     var divPosition = $('#refund').offset(); 

     setTimeout(function(){ 
      $('html, body').animate({ scrollTop: divPosition.top }, "slow"); 
     }, 1); 
    } 
</script> 

<button type="button" class="btn-link" data-toggle="collapse" data-target="#refund" onclick="javascript: scrollRefund();">Refund Policy</button> 

<div id="refund" class="collapse"> 

回答

4

setTimeout的第二个参数是以毫秒为单位。尝试3000的,而不是1

<script language="Javascript"> 


    function scrollRefund() { 
     var divPosition = $('#refund').offset(); 

     setTimeout(function(){ 
      $('html, body').animate({ scrollTop: divPosition.top }, "slow"); 
     }, 3000); 
    } 
</script> 

<button type="button" class="btn-link" data-toggle="collapse" data-target="#refund" onclick="javascript: scrollRefund();">Refund Policy</button> 

<div id="refund" class="collapse"> 
+0

谢谢你 - 这工作,但不是所有的时间,当它会向下滚动,然后滚动回向上。你有什么想法,为什么这会是行为? – djblois

+1

它有可能试图在最终休息点之前找到offset.top。在setTimeout函数内用var divPosition移动该行。 – Joey

0

尝试使用

setTimeout(function(){ 
 
      $('html, body').animate({ scrollTop: divPosition.top }, "slow"); 
 
     }, 3000);