加载时的图像幻灯片无法正常工作
Image slideshow at onload not working properly
我知道这个问题已经被问过很多次了,但我检查了其中的大部分,但没有找到解决我的问题的方法,所以我在这里再次提问。
所以,问题是:
我正在做一个电影网站项目。
我在我的主页上添加了一些图片作为幻灯片放映,但由于某种原因,幻灯片放映无法正常工作。它有一些小故障,比如有时顺序不正确,有时所有图片都试图同时出现,或者它们变化超快等。
我猜想当我重新加载网站时可能是 bcz,之前的 onlaod 也继续工作所以就像有 2 个幻灯片放映或类似的东西,所以从其他解决方案我想我必须把 onload=某处可能为空,但我无法确切地弄清楚。
任何帮助将不胜感激。
这是我的 html 幻灯片放映代码:
<div class="bg-movies" style="top: 65%;">
<img src='images/slideshow/war.jpg' width='1000' height='300'
onload="setSlide();"/>
</div>
这是我的 javascript 代码:
<script language='javascript'>
<!--
var toprated=new Array('sarkar.jpg','hajwala.jpg','96.jpg','war.jpg');
var pos=0,x;
document.images[1].src='images/slideshow/'+toprated[0];
function setSlide(){
x=setInterval('chgPic()',2000);
}
function chgPic(){
pos=(++pos)%toprated.length;
document.images[1].src="images/slideshow/"+toprated[pos];
}
-->
</script>
你的问题是递归。加载图像后,您将调用 setSlide()
方法。这将设置调用 chgPic()
的时间间隔,但是当调用 chgPic()
方法并更新图像 src 时,img
标签上的 onload
事件将是再次执行(因为图像已加载)。因此 setSlide()
将被再次调用,这将设置另一个间隔来调用 chgPic()
方法。等等等等。我很惊讶你的浏览器没有崩溃。
你应该做的是在页面加载后设置时间间隔(即调用 setSlide()
方法),或者更好的是,如果你准备好使用 jQuery 的文档使用 jQuery:
$( document ).ready(function()
{
}
并在此处调用您的 setSlide()
方法。
尽管如此,我不建议按照您的方式进行操作。您可以使用一些简单的 jQuery 和 CSS 来让它工作。看看 this link。
我知道这个问题已经被问过很多次了,但我检查了其中的大部分,但没有找到解决我的问题的方法,所以我在这里再次提问。
所以,问题是:
我正在做一个电影网站项目。 我在我的主页上添加了一些图片作为幻灯片放映,但由于某种原因,幻灯片放映无法正常工作。它有一些小故障,比如有时顺序不正确,有时所有图片都试图同时出现,或者它们变化超快等。
我猜想当我重新加载网站时可能是 bcz,之前的 onlaod 也继续工作所以就像有 2 个幻灯片放映或类似的东西,所以从其他解决方案我想我必须把 onload=某处可能为空,但我无法确切地弄清楚。
任何帮助将不胜感激。
这是我的 html 幻灯片放映代码:
<div class="bg-movies" style="top: 65%;">
<img src='images/slideshow/war.jpg' width='1000' height='300'
onload="setSlide();"/>
</div>
这是我的 javascript 代码:
<script language='javascript'>
<!--
var toprated=new Array('sarkar.jpg','hajwala.jpg','96.jpg','war.jpg');
var pos=0,x;
document.images[1].src='images/slideshow/'+toprated[0];
function setSlide(){
x=setInterval('chgPic()',2000);
}
function chgPic(){
pos=(++pos)%toprated.length;
document.images[1].src="images/slideshow/"+toprated[pos];
}
-->
</script>
你的问题是递归。加载图像后,您将调用 setSlide()
方法。这将设置调用 chgPic()
的时间间隔,但是当调用 chgPic()
方法并更新图像 src 时,img
标签上的 onload
事件将是再次执行(因为图像已加载)。因此 setSlide()
将被再次调用,这将设置另一个间隔来调用 chgPic()
方法。等等等等。我很惊讶你的浏览器没有崩溃。
你应该做的是在页面加载后设置时间间隔(即调用 setSlide()
方法),或者更好的是,如果你准备好使用 jQuery 的文档使用 jQuery:
$( document ).ready(function()
{
}
并在此处调用您的 setSlide()
方法。
尽管如此,我不建议按照您的方式进行操作。您可以使用一些简单的 jQuery 和 CSS 来让它工作。看看 this link。