Я пытаюсь создать несколько экземпляров ползунка на странице. Каждый слайдер должен знать, какой слайд он просматривает в данный момент. Похоже, что когда я обновляю свойство 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
Ваша оценка «Я не думаю, что это правильно» хорошо оценена. вы прикрепляете один и тот же объект к каждому слайдеру. Моя склонность заключалась в том, чтобы инвертировать это и сделать MySlider конструктором, который принимает параметр (один элемент слайдера), на котором будет работать. Создайте новый MySlider для каждого элемента слайдера, который у вас есть. – underrun
@underrun Не могли бы вы показать мне, как? Идея заключалась в том, что когда кто-то реализует этот модуль, они могут просто называть 'MySlider.init();' как только их DOM загрузится, а моя функция будет перебирать сопоставленные элементы на странице и создавать экземпляр для каждого. Я бы не хотел, чтобы им приходилось вручную создавать экземпляры. –