我有下面的代码,但我不能调用nextPromo,因为它不是一个函数。我怎样才能做到这一点?我正在尝试使用面向对象的样式设置旋转器。我是新手,所以我很困惑。我尝试了很多东西,但我不知道,我很沮丧,请帮助
function promoSlides(s){
this.index = 0;
this.prevIndex = 0;
this.currentVeh = "";
this.t;
this.slides = s;
this.len = this.slides.length;
this.sortWeight = function(){
($('body').hasClass('en')) ? this.slides.sort(SortByWeight) : this.slides.sort(SortByWeightFr);
};
function SortByWeight(a,b) { return b.weight - a.weight; }
function SortByWeightFr(a,b) { return a.frWeight - b.frWeight; }
this.startTimer = function(){ this.t = setTimeout("this.nextPromo()", 3000); }
this.nextPromo = function(){
if(this.index > 0 || this.prevIndex > 0) $(this.slides[this.prevIndex].el).css("display","none");
$(this.slides[this.index].el).css("display","block");
this.prevIndex = this.index;
this.index = (this.index < this.len-1) ? this.index+1 : 0;
this.startTimer();
}
return true;
} ;
答案 0 :(得分:1)
实际上,nextPromo
是一个功能。你可以这样称呼它:
this.nextPromo();
或者,如果这不起作用,你可以像普通函数一样调用它:
nextPromo();
有关此类功能的示例,请参阅this jsFiddle。
希望这有帮助。
答案 1 :(得分:0)
您正在为this.nextPromo
分配一个功能,因此调用this.nextPromo();
应该有效。
答案 2 :(得分:0)
编辑:这是我测试过的一个简化示例。这使用setInterval来定期推进幻灯片索引。 “下一个”功能包含在匿名函数中。
function promoSlides(s) {
this.startTimer = function () {
setInterval(
function () {
alert("called");
// if (this.index > 0 || this.prevIndex > 0) {
// $(this.slides[this.prevIndex].el).css("display", "none");
// }
// $(this.slides[this.index].el).css("display", "block");
// this.prevIndex = this.index;
// this.index = (this.index < this.len - 1) ? this.index + 1 : 0;
}, 3000
);
}
return true;
};
var p = new promoSlides(null);
p.startTimer();