2013-10-24 38 views
0

試圖讓圖像刷新自己的JavaScript一段時間,然後停止(以避免大量的緩存生成)。這段代碼雖然不起作用,所以不確定缺少什麼?爲什麼不會自動刷新圖像

<script> 
var c = 0; 
function fnSetTimer() 
{ 
document.getElementById('refreshimage1').src='http://68.116.42.142:8080/cam_4.jpg?\'+new Date().getMilliseconds(); 
var t = setTimeout(fnSetTimer,5000); 
c=c+1; 
if(c>5) 
clearTimeout(t); 
} 
</script> 
<img src="http://68.116.42.142:8080/cam_4.jpg"; id="refreshimage1" onload="fnSetTimer()" width="400" /> 

然而,這個代碼的工作:

<img src="http://68.116.42.142:8080/cam_4.jpg"; id="refreshimage2" onload="setTimeout('document.getElementById(\'refreshimage2\').src=\'http://68.116.42.142:8080/cam_4.jpg?\'+new Date().getMilliseconds()', 5000)" width="400" /> 

所以,如果你並排放置兩個側面,底部的圖像將刷新(無限期),但上面的圖像只是裝載一次,從來沒有刷新。任何想法,我在頂級代碼中錯過了什麼?

+0

你真的在你的代碼中有'?'+'嗎?將其更改爲'?'+' –

回答

1

的問題是,該功能重新加載圖像,它調用的函數,這將重新加載圖像...

你也有與圖像URL的一個問題 - 「\」用來特殊字符轉義,如果你想有一個斜線,你需要兩個 - 「\\」

把這個在你的頭

<script language="javascript"> 

function fnSetTimer(image, src, counter, limit) 
{ 
    image.onload = null; 

    if(counter < limit) 
    { 
     counter++; 
     setTimeout(function(){ fnSetTimer(image, src, counter, limit); },5000); 
     image.src= src+ '?\\'+new Date().getMilliseconds(); 
     alert(counter); // show frame number 
    } 
} 
</script> 

把這種在體內

<img src="http://68.116.42.142:8080/cam_4.jpg"; id="refreshimage1" onload="fnSetTimer(this, this.src, 0, 5);" width="400" /> 

這應該修復它爲你 - 它只是觸發的onLoad一次,然後通過5次循環,你應該能夠在WordPress的編輯圖像標記等

請務必給予每個圖像不同的ID

+0

謝謝!當我將腳本放在標題中時,這很有效。不幸的是,我使用的是wordpress網站,這意味着我必須將腳本加載到header.php中,或者調用.js文件。我試圖在每個頁面上編輯一些內容,因此不幸的是腳本無法進入HEADER部分。而且,當我將這些代碼全部放在BODY中時,此代碼似乎不起作用。如果你知道一種方法來讓這個刷新圖像在x次工作後停止,並且所有從BODY調用,請讓我知道?謝謝你的偉大答案 - – Rich

+0

以什麼方式看起來不起作用? –

+0

- 我已經更新了它,把功能放在任何你喜歡的地方 - 沒關係。 您可以在Wordpress中編輯圖像標籤。 –