【发布时间】:2013-05-29 21:40:29
【问题描述】:
我有这段代码应该为幻灯片生成一个计数器,然后更改计数器中的图片和相应的数字颜色。但是,在幻灯片循环播放两次后,计数器会变为 display:none,然后在每次幻灯片开始循环时重新出现和消失。
//icons for newsreel guide
for(i=0;i<document.getElementsByClassName("news").length;i++){
var count=i+1;
$('#counter').append('<span class="count">'+count+'</span>');
}
//newsreel script
$(".news").hide();
setTimeout (function() {
var wait = $(".news:last").index()*12000+12000;
function newsreel(){
var i=0;
(function showNews(elem){
if(i==document.getElementsByClassName("count").length){
i=0;
}
document.getElementsByClassName("count")[i].style.color="#000";
elem.fadeIn(2000,function(){
elem.delay(8000).fadeOut(2000,function(){
document.getElementsByClassName("count")[i].style.color="#3159a0";
i=i+1;
$(this).next().length && showNews($(this).next());
});
});
})
( $(".news:first"));
setTimeout (arguments.callee, wait);
}/*end newsreel()*/
newsreel();
}, 2000);
起初我以为它使用了已弃用的arguments.callee,但我改变了它,它仍然在提示时发生。有任何想法吗?
【问题讨论】:
-
为什么要使用已弃用的代码?
-
@Justin Morgan 很久以前有人帮我制作了这张幻灯片,这就是他们当时的建议。
-
那条线在做什么?
$(this).next().length && showNews($(this).next()); -
@Karl-AndréGagnon - 该行将导致
showNews递归$(this)的后续兄弟,直到它到达容器的末尾。 -
不是条件式吗?
标签: javascript jquery slideshow counter