有两个计时器, tim_change每5秒更换一次幻灯片,即创建一个.. tim_scroll将幻灯片滚动35次x 20毫秒。
现在的问题是第一次调用changeSlide()时,幻灯片不会滚动。 好像tim_scroll第一次不起作用。但在那之后工作。因此,最后,幻灯片在页面加载后10秒更改,之后每5秒更改一次。 警报总是每隔5秒显示一次(因此我猜测正确调用changeSlide())。
怎么回事?我有另一个案例,这些计时器第一次不能正常工作。 FireFox 27.01。
var tim_change;
var tim_scroll;
var counter;
function init() {
registerSlideChange();
}
function registerSlideChange() {
tim_change = window.setInterval("changeSlide()", 5000);
}
function changeSlide() {
alert("changeSlide");
tim_scroll = window.setInterval("scrollFrame('scrollerID', 6, 0)", 20);
}
function scrollFrame(name, x, y) {
var frame = document.getElementById(name);
if(counter < 35) {
frame.contentWindow.scrollBy(x, y);
counter++;
}
else {
clearInterval(tim_scroll);
counter = 0;
}
}
window.onload =init;
答案 0 :(得分:0)
我认为你误解了setInterval
是如何运作的。它不会立即执行代码,而是仅在间隔之后执行。例如,如果您希望scrollFrame()
在changeSlide()
运行后立即执行,则需要在scrollFrame()
中致电changeSlide()
:
function changeSlide() {
alert("changeSlide");
scrollFrame('scrollerID', 6, 0);
tim_scroll = window.setInterval("scrollFrame('scrollerID', 6, 0)", 20);
}
同样,如果您希望在changeSlide()
运行时立即执行registerChangeSlide()
,则必须调用它。
function registerSlideChange() {
changeSlide();
tim_change = window.setInterval("changeSlide()", 5000);
}