自从我玩过setInterval()已经有一段时间了.
我的脚本第一次执行时就很好.但是,当它尝试通过getNextProperty()获取下一个属性时,它开始陷入困境.如果您有Firebug或console.log()的等效输出,您会看到它正在调用不应执行的操作!
现在有相当多的JavaScript,因此与发布所有链接相比,链接到它会更好.
值得一提的是,我所有的DOM / AJAX都是使用jQuery完成的.
我已尽力确保clearInterval()正常运行,并且似乎未在其下运行任何代码.
setInterval()用于预加载下一张图像,然后在图库中显示它.当间隔检测到我们位于最后一张图像((nextListItem.length === 0))时,它意味着清除该间隔并从新属性开始.
现在已经让我发疯了一段时间,所以有人能帮助我吗?
这可能真的很明显!
非常感谢!
更新资料
好吧,现在我更好地知道问题是我天真的以为插件可以开箱即用.
我确实从an answer on Stack Overflow得到了这个插件.我已经向作者提了这个问题.
感谢您的所有回答!
jQuery.extend(jQuery,{
imagesToLoad: 0,
问题在于此变量是全局/共享的(jQuery.imagesToLoad),因此稍后进行检查:
if(jQuery.loadedImages.length >= jQuery.imagesToLoad){
取决于此插件是否不能同时被调用两次,否则,如果check失败,则是因为您稍后将在代码中调用此插件:
$.preloadImages({
urls: [nextImage],
该计数下降到1,这使得if不仅在最后一个图像上,而且在第一个图像之后的所有图像在第一个图像之后都设置为true(由于回调运行时,它在时间上重叠),从而导致完整的回调可以触发很多次,而不仅仅是一次,所以代码如下:
$.preloadImages({
urls: preloadImages,complete: function() { showProperty(property); }
});
…看到该完整功能多次运行,因此您同时启动了多个间隔(这就是为什么您看到console.log(‘show property named’property.slug)在日志中执行了很多次的原因).