2016-03-15 45 views
2

這是我的情況,我有一個頁面,它基於一個文件夾中存在的pdf文件的數量,從一個php while循環中創建了多個div/id。我的目標是每5秒滾動到每個ID,然後從頭開始重新開始滾動。下面的代碼工作正常,但問題是,如果我添加5個新文件到文件夾,那麼我需要複製五次函數,我正在尋找的是滾動爲了文檔上所有可用的ID。有什麼辦法可以寫一個函數來做到這一點?任何燈將不勝感激。Jquery ScrollTop to multiples ID + SetTimeout

這是我的實際代碼:

$(document).ready(function() { 

     function loopanchors() { 

      setTimeout(function() { 
       $('html, body').animate({ 
        'scrollTop': $('#1').offset().top 
       }, 2000); 
      }, <?php echo $pdf_time; ?>); 

      setTimeout(function() { 
       $('html, body').animate({ 
        'scrollTop': $('#2').offset().top 
       }, 2000); 
      }, <?php echo $pdf_time*2; ?>); 

      setTimeout(function() { 
       $('html, body').animate({ 
        'scrollTop': $('#3').offset().top 
       }, 2000); 
      }, <?php echo $pdf_time*3; ?>); 

      setTimeout(function() { 
       $('html, body').animate({ 
        'scrollTop': $('#4').offset().top 
       }, 2000); 
      }, <?php echo $pdf_time*4; ?>); 

      setTimeout(function() { 
       $('html, body').animate({ 
        'scrollTop': $('#5').offset().top 
       }, 2000); 
      }, <?php echo $pdf_time*5; ?>); 

      setTimeout(function() { 
       $('html, body').animate({ 
        'scrollTop': $('#6').offset().top 
       }, 2000); 
      }, <?php echo $pdf_time*6; ?>); 

      setTimeout(function() { 
       $('html, body').animate({ 
        'scrollTop': $('#7').offset().top 
       }, 2000); 
      }, <?php echo $pdf_time*7; ?>); 

      x = setTimeout(function() { 
       loopanchors() 
      }, <?php echo $pdf_time*8; ?>); //will loop every 5 seconds. 
     } 

     loopanchors(); //start it up the first time 

    }); 
+0

$ pdf_time僅僅是一個5000毫秒的變量,所以我剛剛乘上相同的ID爲了進步。 – Aramil

+0

您可以使用循環刪除重複的代碼; – itzmukeshy7

回答

2

試試這個代碼調整$ pdf_time & totalPDF根據自己的需要:

<script> 
    var totalPDF = 7; 
    var currentPDF = 0; 
    var loopInterval = <?php echo $pdf_time; ?>; 
    $(function(){ 
    function loopanchors(){ 
     if(totalPDF <= currentPDF++){ 
     currentPDF = 1; 
     } 

     /* scroll to currentPDF */ 
     setTimeout(function(){ 
     console.log('scrolling to', currentPDF); 
     try{ 
      $('html, body').animate({ 
      scrollTop: $('#' + currentPDF).offset().top 
      }, 
      2000); 
     }catch(e){ 
      console.log('element not found'); 
     } 

     /* scroll next pdf */ 
     loopanchors(); 
     }, (loopInterval * currentPDF)); 
    } 

    /*start it up the first time*/ 
    loopanchors(); 
    }); 
</script> 
+0

我無法使其運行 – Aramil

+0

嘗試更新的代碼;如果你想爲所有的pdf設置相同的滾動量更新這個'},(loopInterval * currentPDF));'到'},(loopInterval));' – itzmukeshy7

+0

工作就像一個魅力!謝謝!我只修改var totalPDF = 7到var totalPDF = $(「。pdf_container」)。獲取包含從php循環生成的pdf的實際數量。再次感謝! – Aramil