Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Передача объекта события в метод (https://javascript.ru/forum/dom-window/79203-peredacha-obekta-sobytiya-v-metod.html)

Snakecatcher 04.01.2020 18:54

Передача объекта события в метод
 
var oSliders = {


	init: function(){

		var p = document.getElementById('page'),

			h = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight,

			slides = document.querySelectorAll('.slide'),

	    	p.style.paddingTop = h - 130 + 'px';

	    	p.addEventListener('mousewheel', oSliders.mThrottle(oSliders.searchActiveClass, 1000));


	},


	mThrottle: function(fn, wait){

		var slidesArray = Array.from(this.slides);

		  var time = Date.now();

		  return function() {

		    if ((time + wait - Date.now()) < 0) {

		      fn();

		      time = Date.now();
		    }
		  }
	},
 

	searchActiveClass: function(e){

		slideIndex = 0;

		if(e.deltaY < 0) {

		  } else {

		  	slides[slideIndex].classList.remove('active');

		  	slides[slideIndex].classList.add('old');

		  	slides[slideIndex].nextElementSibling.classList.add('active');

		  	slideIndex++;

		  }

		return false;

	}
}


document.addEventListener("DOMContentLoaded", oSliders.init);


Здравствуйте. Обработчиком на событие мыши хочу повесить метод тротлинга и в нем метод oSliders.searchActiveClass, в котором не могу передать объект события. Uncaught ReferenceError: e is not defined

Aetae 04.01.2020 19:59

Вполне очевидно, что чтобы аргумент был передан - его надо передать:
return function(...args) {

		    if ((time + wait - Date.now()) < 0) {

		      fn(...args);

		      time = Date.now();
		    }
		  }

Однако у вас впереди ещё куча граблей.)

Snakecatcher 04.01.2020 22:14

Спасибо


Часовой пояс GMT +3, время: 03:06.