【发布时间】:2013-01-20 13:53:12
【问题描述】:
我对 JavaScript/jQuery 还很陌生,但是已经编写了一个脚本来更改背景图片。
第一个脚本
第一个脚本版本运行良好,并执行以下操作:
- 创建一个 setInterval 计时器,该计时器调用函数 backgroundChange() 以每 7 秒运行一次
- 决定下一张图片的网址
- 设置背景图片
这很好用,但问题是当网站处于活动状态时,如果连接速度较慢,则背景图片无法及时加载以进行下一次计时器更改。
新脚本
所以新版本:
- 创建一个 setTimeout 计时器,该计时器调用函数 backgroundChange() 以在 7 秒后运行
var theTimer = setTimeout(backgroundChange, 7000);
- clearsTimeout(当然我不应该运行这个?)
window.clearTimeout(theTimer);
- 决定下一张图片的网址
- 等到图片加载完毕:
- 然后设置背景图片
- 然后添加一个新的 setTimeout 计时器
$('#testImage').attr('src', imageText).load(function()
{
$('#backgroundTop').fadeIn(timeIn,function()
{
theTimer = setTimeout(backgroundTimer, 7000);
});
});
问题在于,每当计时器运行并存在于 .load 函数中时,计时器现在似乎被调用的次数增加了一倍。
我还没有故意不发布我的代码,因为我想首先确保我的理解是正确的,而不是有人只是修复我的代码。
非常喜欢。
【问题讨论】:
-
你不必在
clearTimeout(theTimer)里面backgroundChange;计时器已经触发(这就是你执行backgroundChange的原因!)所以这是一个noop。 -
请发布您的代码。否则无法明确回答您的问题。
标签: javascript timer duplicates settimeout