@FluffyJune

Не могли бы вы дать пояснение коду?

Объясните некоторые моменты в этой функции

Ps:
Я хочу понять логику кода.
если никто не напишет - я просто не узнаю, что конкретно мне нужно искать.

setInterval((function(){
    var pos = 0,
    btn = $(".slide_btn");
    elem =[].slice.call(btn);
    return function(){
        pos %= elem.length;
        $(elem[pos++]).click();
    }
})(),1000);


1) Для чего функция в интервале берется в скобки вот так ( function(){} )()
2) что значит знак %=

тогда еще
3) что за массив в переменной elem
  • Вопрос задан
  • 409 просмотров
Решения вопроса 1
nonlux
@nonlux
Элементарно Ватсон!
Читайте весь код сверху вниз и слева направо .

Цель этого чудовищного замысла профессора Мориарти- каждую секунду кликать по очереди кнопки с классом "slide_btn".

Для вас упрощенно:
var pos = 0;
var btn = $(".slide_btn");
var elem =btn.toArray();
setInterval(function(){
      if (pos >= elem.length){
           pos=0;
      }
      $(elem[pos]).click();
      pos++;
    
},1000);


Разбирайтесь с анонимными функциями, call, и прочей магией js
С наилучшими пожеланиями, ваш Шерлок Холмс.
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
1. Загуглите iife, самовызывающаяся функция
2. Более краткий вариант pos = pos % elem.length
Ответ написан
jumper423
@jumper423
web-developer
3. хранится массив элементов с классом ".slide_btn"
Ответ написан
IDma88
@IDma88
Программист C++
По воводу п.3.
Если я правильно понял, то btn = $(".slide_btn"); даст объект, в котором будут поля с именами ''0', '1' и т.д. со ссылкой на найденные объекты.
Строка же elem =[].slice.call(btn); преобразует его в массив.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы