getElementbyId导致浏览器崩溃

时间:2014-04-13 01:26:26

标签: javascript html

我正在为我的课程开展一个项目,要求我每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的循环的第一行。有人可以帮忙解释为什么会这样做吗?

2 个答案:

答案 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来调用函数,而不是把它放在函数