Циклы 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'); } }); }; |
Решение найдено
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); }; |
Тут 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) }; |
:) :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'); }) }) |
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. |