我試圖在頁面上創建滑塊的多個實例。每個滑塊應該知道它當前正在查看哪個幻燈片。看起來,當我更新slide
屬性時,我將其更改爲類,而不是實例。這表明我沒有在我的公開init()
函數中正確實例化。我哪裏錯了?實例化JavaScript模塊模式
var MySlider = (function() {
'use strict';
var animating = 0,
slides = 0, // total slides
slider = null,
slide = 0, // current slide
left = 0;
function slideNext(e) {
if ((slide === slides - 1) || animating) return;
var slider = e.target.parentNode.children[0],
x = parseFloat(slider.style.left);
animate(slider, "left", "px", x, x - 960, 800);
slide++;
}
return {
init: function() {
var sliders = document.querySelectorAll('.my-slider'),
l = sliders.length;
for (var i = 0; i < l; i++) {
sliders[i] = MySlider; // I don't think this is correct.
slider = sliders[i];
buildSlider(slider);
}
}
}
})();
我不明白這種創建方法的目的,除了增加無用的複雜性和錯誤來源。有人能夠啓發我嗎? – Virus721 2013-04-24 14:26:41
你的「我不認爲這是正確的」路線很好評估。您將同一個對象附加到每個滑塊。我的傾向是將其反轉,並使MySlider成爲一個構造函數,它需要一個參數(單個滑塊元素)來操作。爲每個滑塊元素創建一個新的MySlider。 – underrun 2013-04-24 14:28:09
@underrun你能告訴我如何?這個想法是,當有人實現這個模塊時,他們可以調用MySlider.init();一旦他們的DOM已經加載,我的函數將遍歷頁面上的匹配元素併爲每個元素創建一個實例。我不希望他們必須手動創建實例。 – 2013-04-24 14:31:04