我正在为我的班级做一个项目,要求我每5秒更改一个横幅图像,时间不确定。我正在使用setInterval来完成这个任务,但我认为它给我的函数带来了问题。30秒-1分后,浏览器崩溃。
<body onload="startImgLoop();">
<img id="banner" alt="Banner Image" />
</body>JavaScript
function startImgLoop()
{
var img = document.getElementById("banner");
img.src = pictures[index];
setInterval(startImgLoop, 5000);
if (index == 5)
index = 0;
else index++;
}当浏览器崩溃时,它会问我是否要停止脚本,它指向循环的第一行,我正在使用getElementById。有人能帮我解释一下为什么会这样吗?
发布于 2014-04-13 01:31:27
每次间隔运行时,都要设置一个新的间隔。这将耗尽计时器资源,并使浏览器忙于为所有这些资源服务。
您可以将其更改为:
var index = 0;
setInterval(function() {
var img = document.getElementById("banner");
img.src = pictures[++index % pictures.length];
}, 5000);发布于 2014-04-13 01:33:51
function startImgLoop()
{
setInterval(goLoop, 5000);
}
function goLoop()
{
var img = document.getElementById("banner");
img.src = pictures[index];
if (index == 5)
index = 0;
else index++;
}试试看,我不测试它。应该使用setInterval调用函数,而不是将其放入函数中。
https://stackoverflow.com/questions/23038079
复制相似问题