Показать сообщение отдельно
  #1 (permalink)  
Старый 27.01.2019, 21:54
Интересующийся
Отправить личное сообщение для prolk Посмотреть профиль Найти все сообщения от prolk
 
Регистрация: 15.03.2018
Сообщений: 20

oop/ вопросы с class()
Здрасте, подскажите, пожалуйста, как мне вставить в new Timer(), btnNext, чтобы метод начал работать...
см. два последних, в первом не по делу написано..........))
window.onload = function(e) {
	new Timer({
		images: '.gallery img',
		rate: 1000,
		auto: true,
	});
}

class Timer {
	constructor(obj) {
		let slider = this,
		i = 0;
		this.images = document.querySelectorAll(obj.images);
        this.rate = obj.rate || 1500;
        this.auto = obj.auto;
		this.btnNext = obj.btnNext;
}
	btnNext() {
			slider.images[i].classList.remove('showed');
			i++;
			if(slider.images[i] >= slider.images.length) {
				i = 0;
			}
			slider.images[i].classList.add('showed');
	}
	if(slider.auto) {
		setInterval(slider.btnNext, slider.rate)
	}
}

и еще в строке 26 пишет ошибку:"Uncaught SyntaxError: Unexpected token . ".


function Slider (obj) {
	let slider = this,
	i = 0;
	this.images = document.querySelectorAll(obj.images);
	this.rate = obj.rate;
	this.auto = obj.auto;	
	this.next = function() {
		slider.images[i].classList.remove('showed');
		i++;
		if (i>=slider.images.length) {
			i = 0; 
		}
		slider.images[i].classList.add('showed');
	}
	if (slider.auto) {
		setInterval(slider.next, slider.rate);
	}
};

new Slider({
	images:'.gallery img',
	rate: 1000,
	auto: true,
});

сверху рабочий))))))))
переписал 1-й вариант, вот так:
class Timer {
    constructor(obj) {        
        this.images = document.querySelectorAll(obj.images);
        this.rate = obj.rate || 1500;
        this.auto = obj.auto;
		this.run();
		let i = 0;// здесь var наверно, если что... let не увидит...
		
	}
        btnNext(){
			let i = 0;
            this.images[i].classList.remove('showed');
            i++;
            if(i >= this.images.length) {
                i = 0;
            }
            this.images[i].classList.add('showed');
    }
		run() {
			if(this.auto){
			setInterval(this.btnNext,this.rate);
			}			
}
};
new Timer({
        images: '.photos img',
        rate: 1000,
        auto: true,
    });


переписал еще раз........ теперь вопрос в стр: 7 и стр: 11, куда и как поставить счетчик?......, или, еще где-то, таймер работает, не может прочитать 0 не найден......тут должен, типа быть массив, или в объекте.. короче, запутался))))
кстати, убрал: let slider = this, дело пошло, это костыль какой-то?

Последний раз редактировалось prolk, 28.01.2019 в 02:35.
Ответить с цитированием