Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Циклы ES5, переписать цикл с ES6 на ES5 (https://javascript.ru/forum/misc/81550-cikly-es5-perepisat-cikl-s-es6-na-es5.html)

TheSanches 14.12.2020 12:58

Циклы 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');
      }
    });
  };

TheSanches 14.12.2020 13:46

Решение найдено
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);
  };

voraa 14.12.2020 13:49

Тут 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)
  };

рони 14.12.2020 14:47

:) :write:
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');
})
})

voraa 14.12.2020 17:14

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');
  })
})


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