2012-05-28 53 views
2

我一直在四處尋找最簡單的方法來自動每隔x秒刷新一次頁面上的特定div。使用javascript Autorefresh div

到目前爲止我有:

<script type="text/javascript"> 
window.onload = startInterval; 
function startInterval() 
{ 
    setInterval("startTime();",1000); 
} 

function startTime() 
{ 
    document.getElementById('time').innerHTML = Date(); 
} 

但是其中的innerHTML設置爲日期函數的最後一部分是我會通過的「時間」的內容,如更換ID,而不是實際的日期打印。

我知道我可以加載一個iframe或externa html頁面,但我想只需調用頁面上的現有div而不必更改現有內容。那可能嗎?

謝謝!

編輯:我的意思是我有AA格,看起來像這樣在頁面上:

一些東西

我想有該div刷新每x秒,所以是的,你可能會忽略日期()作爲我的例子的一部分,我只是簡單地發現了代碼,但是當我嘗試刪除.innerHTML部分時,它什麼都不做,我想Lol!

+0

等一下,你想用'#time'的內容替換'#time'的內容嗎? – Amadan

+0

你的意思是「通過調用頁面上現有的div」? –

+2

首先你應該更喜歡'setInterval(startTime,1000);'語法。你能否澄清*我想替換爲「時間」ID的內容,而不是實際的日期打印。* - 我恐怕我不明白。 –

回答

1

注:的OP實際上是想在已經包含了網頁上的廣告服務,以重新加載腳本。以下對此沒有幫助;然而,由於問題的方式,我離開了這個答案,因爲我認爲它可以幫助其他人尋找以下類型的解決方案。請注意,這並沒有說明如何「重新運行」已經包含的(可能是全局和非功能的)代碼。


說我有以下div我想動態刷新:

<div id="refresh">Refreshes...</div> 

jQuery提供的$.ajax group of functions,允許你動態地請求一個頁面,並使用響應爲HTML。例如:

$(document).ready(function(){ 
    var $refresh = $('#refresh'), 
     loaded = 1, 
     data = { 
      html: $.toJSON({ 
       text: 'some text', 
       object: {} 
      }), 
      delay: 3 
     }; 

    var refresh = function(){ 
     $.ajax({ 
      url: "/echo/html/", 
      data: data, 
      type: "GET", 
      success: function(response) { 
       $refresh.html($refresh.html() + '<br/>#' + loaded); 
       loaded++; 
       setTimeout(refresh, 3000); 
      } 
     }); 
    }; 

    refresh(); 
}); 

http://jsfiddle.net/Ah3jS/

注意,我在這裏使用的jsfiddle的echo/html/功能良好。爲了演示目的,data變量被調整爲與此一起工作。實際上,與請求一起發送的data要麼是GET要麼是POST像您一樣正常使用的變量。此外,我使用responsesuccess,但這是因爲它不會返回任何jsFiddle的演示模式。

jQuery make的這個東西很容易。真的,我會考慮使用它,而不是大多數其他方法(儘管要求)。

+0

非常感謝您的幫助,並花時間詳細解釋了這一點。我必須承認,我最終使用了iframe,它盡我所需,但不那麼幹淨。無論如何感謝您的時間! – Sherif

1

你在找這樣的嗎?

<script type="text/javascript"> 
window.onload = startInterval; 
function startInterval() { 
    setInterval("startTime();",1000); 
} 

function startTime() { 
    var now = new Date(); 
    document.getElementById('time').innerHTML = now.getHours() + ":" + now.getMinutes() + ":" +now.getSeconds(); 
} 
</script>