Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.12.2020, 12:58
Аспирант
Отправить личное сообщение для TheSanches Посмотреть профиль Найти все сообщения от TheSanches
 
Регистрация: 21.01.2018
Сообщений: 78

Циклы ES5, переписать цикл с ES6 на ES5
Здравствуйте, подскажите как можно данный код переписать на стандарт ES5.   
Не выходит переписать код на ES5, что бы работал, простая смена переменных на var не приносит должного результата, так как в таком случае, переменная ( var i == 3). 
const imgTab = document.querySelectorAll('.img-tab');
  const tab = document.querySelectorAll('.tab');

  for(let i = 0; i < tab.length; i++){
    tab[i].addEventListener('click', function(){
      for(let j = 0; j < imgTab.length; j ++){
        imgTab[j].classList.remove('img-tab_act');
        imgTab[i].classList.add('img-tab_act');
      }
    });
  };
Ответить с цитированием
  #2 (permalink)  
Старый 14.12.2020, 13:46
Аспирант
Отправить личное сообщение для TheSanches Посмотреть профиль Найти все сообщения от TheSanches
 
Регистрация: 21.01.2018
Сообщений: 78

Решение найдено
var imgTab = document.querySelectorAll('.img-tab');
  var tab = document.querySelectorAll('.tab');

  var _loop = function _loop(i) {
    tab[i].addEventListener('click', function () {
      for (var j = 0; j < imgTab.length; j++) {
        imgTab[j].classList.remove('img-tab_act');
        imgTab[i].classList.add('img-tab_act');
      }
    });
  };

  for (var i = 0; i < tab.length; i++) {
    _loop(i);
  };
Ответить с цитированием
  #3 (permalink)  
Старый 14.12.2020, 13:49
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,743

Тут i должно быть в замыкании. с var это не пройдет

Так можно сделать

const imgTab = document.querySelectorAll('.img-tab');
  const tab = document.querySelectorAll('.tab');
 
  for(var i = 0; i < tab.length; i++){
   (function (i) {
    tab[i].addEventListener('click', function(){
      for(var j = 0; j < imgTab.length; j ++){
        imgTab[j].classList.remove('img-tab_act');
       }
       imgTab[i].classList.add('img-tab_act');
    });
    })(i)
  };

Последний раз редактировалось voraa, 14.12.2020 в 14:01.
Ответить с цитированием
  #4 (permalink)  
Старый 14.12.2020, 14:47
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,105


var imgTab = document.querySelectorAll('.img-tab');
var tabs = document.querySelectorAll('.tab');
var current = imgTab[0];
tabs.forEach(function(tab, i) {
tab.addEventListener('click', function () {
current.classList.remove('img-tab_act');
current = imgTab[i];
current.classList.add('img-tab_act');
})
})

Последний раз редактировалось рони, 14.12.2020 в 17:31.
Ответить с цитированием
  #5 (permalink)  
Старый 14.12.2020, 17:14
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,743

var imgTab = document.querySelectorAll('.img-tab');
var tabs = document.querySelectorAll('.tab');

tabs.forEach(function(tab, i) {
  tab.addEventListener('click', function () {
     var c = document.querySelector('.img-tab.img-tab_act')
     if (c) c.classList.remove('img-tab_act');
     imgTab[i].classList.add('img-tab_act');
  })
})

Последний раз редактировалось voraa, 14.12.2020 в 17:18.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
преобразовать ES6 в ES5 TheSanches Общие вопросы Javascript 4 15.06.2020 11:31
Переписать функцию в ES6 DarkPhoenix Общие вопросы Javascript 14 21.06.2019 21:52
Как переписать функцию map es6 под ie11? giwuf Javascript под браузер 7 21.02.2019 15:29