我编写了第一个脚本脚本来在某个div元素之间创建幻灯片:
var SlideShow = Class.create({
initialize:function(element, delayStart){
this.element = element;
this.delayStart = delayStart;
this.slides = this.element.childElements();
this.numberOfSlides = this.slides.size();
this.numberActiveSlide = 1;
this.start_slideshow();
},
start_slideshow: function()
{
this.switch_slides.delay(this.delayStart);
},
switch_slides: function()
{
this.slides[this.numberActiveSlide].fade();
if (this.numberActiveSlide == this.numberOfSlides) { this.numberActiveSlide = 1; } else { this.numberActiveSlide = this.numberActiveSlide + 1; }
Effect.Appear.delay(this.slides[this.numberActiveSlide], 850);
this.switch_slides.delay(this.delay + 850);
}
});
document.observe("dom:loaded", function(){
var slideshows = $$('div.slideshow');
slideshows.each(
function(slideshow) {
s = new SlideShow(slideshow, 2);
});
});但是我总是会犯这个错误,而且已经好几个小时了,我不知道我的问题出在哪里!
未定义不是对象(计算this.slidesthis.numberActiveSlide);
谢谢你!
尼克
发布于 2013-02-27 02:13:58
99%的人认为这是一个上下文问题。确保绑定函数调用,以便在代码中保留this。
调试this在switch_slides中的内容:它应该与start_slideshow中的this相同。如果不是,则将对switch_slides的调用绑定到实例:
start_slideshow: function()
{
this.switch_slides.bind(this).delay(this.delayStart);
},您可能必须在switch_slides中进行同样的操作,在那里它会调用自己。
https://stackoverflow.com/questions/15054023
复制相似问题