Firefox setTimeout + jQuery 淡入淡出循环不一致,提前停止,不会循环
Firefox setTimeout + jQuery fade loop inconsistent, stops early, won't cycle
http://jsfiddle.net/x6PCD/11/
我正在尝试制作一个幻灯片,在几个绝对定位的div之间淡出。在Chrome,IE9,Opera上,下面的代码工作正常。但是在 Firefox 上,超时会超时一两次,然后停止。如果删除下面标记的JS部分,它将正确循环。
<style>
.slide {position:absolute; top:0; left:0; width:300px; height:200px}
</style>
<div id="slides" class="slides">
<div class="slide slide1" style="background:#c66">
<div class="swap_links">
<a href="javascript:" class="active">1</a>
<a href="javascript:">2</a>
<a href="javascript:">3</a>
</div>
</div>
<div class="slide slide2" style="background:#6c6">
<div class="swap_links">
<a href="javascript:">1</a>
<a href="javascript:" class="active">2</a>
<a href="javascript:">3</a>
</div>
</div>
<div class="slide slide3" style="background:#36c">
<div class="swap_links">
<a href="javascript:">1</a>
<a href="javascript:">2</a>
<a href="javascript:" class="active">3</a>
</div>
</div>
</div>
<script type="text/javascript">
$(function() {
var fp = '#slides .slide';
var fs = 300;
var t = window.setTimeout(swap, 1000);
$(fp).slice(1).hide();
function swap(to) {
//removing this section, loop plays in FF
if (to) {
$(fp + to).fadeIn(fs);
$(fp).not('.slide' + to).fadeOut(fs);
window.clearTimeout(t);
return;
}
$(fp).eq(1).fadeIn(fs);
$(fp).eq(0).fadeOut(fs, function() {
$(this).appendTo('#slides');
t = window.setTimeout(swap, 1000);
});
}
$('#slides .swap_links a').click(function() {
swap($(this).html());
});
});
</script>
FireFox 似乎一直在向函数中的 to
变量传递任意数值,导致如果传递的值不是 0,则执行 if(to){...}
语句。
要解决此问题,请在 setTimeout() 中执行不带参数的 swap()
函数,如下所示:
var t = window.setTimeout(function(){ swap(); }, 1000);
这是更新的演示: http://jsfiddle.net/x6PCD/14/
我希望这有帮助!
相关文章:
- Javascript循环不会自我更新
- 我的javascript for循环不起作用
- 当属性不一致时,如何根据属性对JS对象列表进行排序
- javascript for循环不起作用
- Jquery-每个循环不更新变量
- 为什么我的While循环不起作用
- 虽然循环不执行或不循环
- JS(node.js)而循环不起作用
- AngularJS循环不工作
- Android和JavaScript解析API之间不一致
- Emberjs#每个循环不处理数组数据
- Javascript的行为与PHP包含文件不一致
- 当使用return语句时,循环不会中断
- 与Javascript中的2D数组和for循环不一致
- Firefox setTimeout + jQuery 淡入淡出循环不一致,提前停止,不会循环
- 谷歌浏览器开发人员工具在嵌套的循环中不一致
- 表行中的循环不一致
- While 循环:生成的表行和列不一致
- 不一致的Javascript行为(嵌套在while循环中的IF语句)
- 为什么我看到使用alert()与不使用alert的JavaScript逻辑行为循环不一致