引用我做的圖像滑塊「類」,最初實例化它:「類」繼續工作而不被全球
var foo = new Slider(document.getElementById("featuredSlider"), 900);
我試圖消除var foo =
並繼續工作,這是令人驚訝的對我。是什麼讓它繼續工作?不全球參考它是一個壞主意?
請注意,"featuredSlider"
是<div>
標籤的id
。它包含一些<a
>標籤,每個標籤包含<img>
標籤。
function Slider(inElement, inStep) {
if (!inElement) return;
this.element = inElement;
this.start = 0;
this.end = 0;
var self = this;
var limit = inElement.getElementsByTagName("a").length*inStep;
setInterval(function() {
self.start = self.end;
self.end = (self.end+inStep)%limit;
self.animate(this.start < this.end ? 1 : -1);
}, 3000);
}
Slider.prototype.animate = function(inZeno) {
this.start += ((this.end-this.start)>>2)+inZeno;
this.element.style.left = this.start+"px";
if (this.start !== this.end) {
var self = this;
setTimeout(function() {
self.animate(self.start < self.end ? 1 : -1);
}, 33);
}
}
//new Slider(document.getElementById("featuredSlider"), 900);
var foo = new Slider(document.getElementById("featuredSlider"), 900);
你能解釋一下「附加到'div'」嗎?我從來沒有聽說過這樣的事情 – asimes
@asimes:在div上設置事件處理程序,在div上設置數據屬性等。例如:'var self = this; div.addEventListener(「click」,function(){self.doSomething();},false);'現在'div'有'self'的引用,它是'this',並且對象保持爲只要'div'有這個參考。 –
@PatrickEvans:是的,謝謝。我不得不承認,我認爲代碼塊是OP *使用滑塊,而不是滑塊的代碼。固定。 –