我正在为我的课程开展一个项目,要求我每5秒更换一次横幅图片,时间不确定。我正在使用setInterval来执行此操作,但我认为这会导致我的函数出现问题。在30秒-1分钟后,浏览器崩溃。
HTML
<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的循环的第一行。有人可以帮忙解释为什么会这样做吗?
答案 0 :(得分:4)
每次间隔运行时,您都要设置一个新间隔。这将耗尽计时器资源并使浏览器忙于为所有人服务。
您可以将其更改为:
var index = 0;
setInterval(function() {
var img = document.getElementById("banner");
img.src = pictures[++index % pictures.length];
}, 5000);
答案 1 :(得分:0)
function startImgLoop()
{
setInterval(goLoop, 5000);
}
function goLoop()
{
var img = document.getElementById("banner");
img.src = pictures[index];
if (index == 5)
index = 0;
else index++;
}
试试这个,我不测试它。你应该使用setInterval来调用函数,而不是把它放在函数
中