2016-02-11 37 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);