2012-10-06 105 views
2

我有以下的Javascript代碼:股利刷新和滾動條問題

<script> 
var auto_refresh = setInterval(
function() 
{ 
$('#loaddiv').load('tables.php'); 
}, 1000); 
</script> 

而且

<div id="loaddiv"> 
<div style="float: left; width:650px; height:99%; border:2px solid #000; 
overflow:auto; background-color:#FFF;"> 
<?php 
index_table(); 
?> 
</div> 
</div> 

上述股利是指1秒後刷新其內容。現在,此內容的輸出是一個基於用戶提交的多行表。當行數超過屏幕高度時,滾動條將顯示。您可以在其中滾動查看添加的行。

現在問題從這裏開始,因爲這個Div刷新滾動條會自動重置爲頂端。這使得很難看到其餘的行。

當Div被刷新時如何阻止滾動條從重置頂部?或者如果可以在插入新行時自動向下滾動。

謝謝!

+0

不錯的主意是,只有從PHP獲取最新的數據及附加到DIV – GBD

+0

@GBD好現有的記錄,但是管理會話下是時,在「管理」無法編輯或刪除,因爲我有每一行的附加選項的滾動。 :/ – Alihamra

+0

滾動條是否爲div #loaddiv或整個窗口? – air4x

回答

0

嘗試下面的代碼。這似乎工作。

$('#loaddiv').load('tables.php', function() { 
    $(this).scrollTop($(this).prop("scrollHeight") - $(this).height()); 
}); 

我從auto scroll to bottom when overflow auto其中一個答案得到它。

+0

感謝您的時間,我已經測試了您提供的代碼,並且頁面始終滾動到頂端。我真的不明白爲什麼它沒有與我合作。我多次搜索了網絡,並且找不到任何解決方案:/。 – Alihamra

+0

ca你給鏈接到演示頁面? – air4x

+0

那麼它在我的本地主機,但我現在正在努力將兩個文件上傳到我的虛擬主機,儘快完成我會爲您提供一個URL。謝謝 ! – Alihamra

0

你可以試試下面

var isScrolling = false; 
var lastScrollPos = 0; 
var counter = 0; 
$(function() { 

    $('#loaddiv').on('scroll', function() { 
     isScrolling = true; 
     lastScrollPos = this.scrollTop; 
    }); 


    refreshTimer = setInterval(refreshContent, 1000); 

    function refreshContent() { 
     if (!isScrolling) { 
      $('#loaddiv').load('tables.php').scrollTop(lastScrollPos); 
     } 
     isScrolling = false; 
    } 

});​ 
+0

嘿,謝謝你的代碼,但我測試過了,問題在於div停止刷新:/。只有通過瀏覽器刷新才能看到新插入的行。請幫助我:(! – Alihamra

+0

你能粘貼你的編輯代碼嗎? – GBD

+0

我已經複製了你提供給我的代碼,並粘貼在我原來的Javascript代碼上面,所以它就像我粘貼的代碼一樣:P – Alihamra