为什么不会自动刷新图像

时间:2013-10-24 22:32:04

标签: javascript image timer refresh

尝试使用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" />

因此,如果您并排放置,则底部图像将刷新(无限期),但顶部图像只加载一次并且永不刷新。我在顶级代码中错过了哪些想法?

1 个答案:

答案 0 :(得分:1)

问题是该函数重新加载图像,调用该函数重新加载图像...

你的图片网址也有问题 - '\'用于转义特殊字符,如果你想要斜线,你需要两个 - '\\'

将它放在你的标题中

<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中编辑图像标签等。

请确保您为每张图片提供不同的身份