2016-02-22 2 views
0

Выполнение простого слайдера с помощью Js при передаче функции с аргументами в addEventListernet слайдер не работает, но при установке onclick = "slide (1)" в ID он отлично работает. Что я делаю неправильно?Функция не работает при передаче аргументов addEventListener

var imgcount = 1; 
var imgTotal = 5; 

var left = document.querySelector(".left"); 
var right = document.querySelector(".right"); 

function slide(x) { 
    var img = document.getElementById("img"); 
    imgcount = imgcount + x; 
    img.src = "img/"+ imgcount +".jpg"; 
} 

left.addEventListener('click', slide(-1)); 
right.addEventListener('click', slide(1)) 

); 
+3

Ой, ту же самую ошибку. Вызов функции напрямую. Используйте анонимную функцию и вызывайте 'slide' из нее или используйте' .bind() '. ** Код: ** 'left.addEventListener ('click', function() {slide (-1)}); right.addEventListener ('click', function() {slide (1)}); ' – Tushar

+0

Вы вызываете метод и применяете то, что он возвращает обработчику событий. – epascarello

+0

Это было задано много раз. Пожалуйста, используйте поиск, прежде чем задавать новый вопрос. –

ответ

1

для того, чтобы сделать это так, как вы начали, вы должны вернуть function из slide:

function slide(x) { 
    return function(){ 
     var img = document.getElementById("img"); 
     imgcount = imgcount + x; 
     img.src = "img/"+ imgcount +".jpg"; 
    } 
} 
Смежные вопросы