【发布时间】:2013-03-08 14:07:55
【问题描述】:
我创建了这个滑块(不想使用插件):
function slider(sel, intr, i) {
var _slider = this;
this.ind = i;
this.selector = sel;
this.slide = [];
this.slide_active = 0;
this.amount;
this.selector.children().each(function (i) {
_slider.slide[i] = $(this);
$(this).hide();
})
this.run();
}
slider.prototype.run = function () {
var _s = this;
this.slide[this.slide_active].show();
setTimeout(function () {
_s.slide[_s.slide_active].hide()
_s.slide_active++;
_s.run();
}, interval);
}
var slides = [];
var interval = 1000
$('.slider').each(function (i) {
slides[i] = new slider($(this), interval, i);
})
我的问题是我不知道如何在最后一张幻灯片(图片)之后获取它,它又回到了第一张幻灯片。现在,它只是 .hide 和 .show 直到最后,如果没有图像,它就不会重新开始。
有人可以帮助我代码建议,使其采用滑块的 .length(其上的图像数量),如果它是最后一张幻灯片(图像),则继续回到第一张幻灯片(图片)......就像一个循环。
编辑:滑块标记
<div class="small_box top_right slider">
<img class="fittobox" src="img/home10.jpg" alt="home10" width="854" height="592">
<img class="fittobox" src="img/home3.jpg" alt="home3" width="435" height="392">
<img class="fittobox" src="img/home4.jpg" alt="home4" width="435" height="392">
</div>
【问题讨论】:
-
除非我忽略了什么:
_s.slide_active++; _s.slide_active = _s.slide_active % this.slide.length; -
但是我已经有了_s.slide_active++;超时了,为什么还要重复呢?
-
据我了解,您有不同的幻灯片相互重叠。您在一段时间内按顺序隐藏幻灯片以在其下方显示幻灯片。如果一段时间后出现最后一张幻灯片,您必须让第一张幻灯片出现而不是隐藏,并且当您进行交易时(第一张幻灯片完全显示)让所有幻灯片出现在其下方并重复相同的顺序
-
@fxg 仅用于上下文
-
您是否尝试在每个
run()调用中运行条件if语句来确定它是否是最后一张幻灯片,然后相应地继续?
标签: javascript jquery html