首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >getElementbyId导致浏览器崩溃

getElementbyId导致浏览器崩溃
EN

Stack Overflow用户
提问于 2014-04-13 01:26:25
回答 2查看 114关注 0票数 0

我正在为我的班级做一个项目,要求我每5秒更改一个横幅图像,时间不确定。我正在使用setInterval来完成这个任务,但我认为它给我的函数带来了问题。30秒-1分后,浏览器崩溃。

代码语言:javascript
复制
<body onload="startImgLoop();">
    <img id="banner" alt="Banner Image" />
</body>

JavaScript

代码语言:javascript
复制
function startImgLoop()
{           
    var img = document.getElementById("banner");
    img.src = pictures[index];

    setInterval(startImgLoop, 5000);

    if (index == 5)
        index = 0;
    else index++;
}

当浏览器崩溃时,它会问我是否要停止脚本,它指向循环的第一行,我正在使用getElementById。有人能帮我解释一下为什么会这样吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-04-13 01:31:27

每次间隔运行时,都要设置一个新的间隔。这将耗尽计时器资源,并使浏览器忙于为所有这些资源服务。

您可以将其更改为:

代码语言:javascript
复制
var index = 0;
setInterval(function() {
    var img = document.getElementById("banner");
    img.src = pictures[++index % pictures.length];
}, 5000);
票数 4
EN

Stack Overflow用户

发布于 2014-04-13 01:33:51

代码语言:javascript
复制
function startImgLoop()
{           
setInterval(goLoop, 5000);
}

function goLoop()
{           
var img = document.getElementById("banner");
img.src = pictures[index];


if (index == 5)
    index = 0;
else index++;
}

试试看,我不测试它。应该使用setInterval调用函数,而不是将其放入函数中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23038079

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档