Resulta que el método
forEach de la clase
NodeList no está soportado por Internet Explorer. Supongo que por eso quieres utilizar un bucle for en vez de forEach.
Tienes dos opciones, usar el bucle for que comentas:
Código Javascript
:
Ver originalvar toggles = document.querySelectorAll('.selector');
var active = null;
function toggleSubmenus (event) {
var current = event.target;
var isCurrentActive = current === active;
for(var i = 0; i < toggles.length; i++){
toggles[i].classList.toggle('visible', toggles[i] === current && !isCurrentActive);
}
active = isCurrentActive ? null : current;
}
for(var i = 0; i < toggles.length; i++){
toggles[i].addEventListener('click', toggleSubmenus);
}
O una opción más elegante, usar un polyfill (y así no necesitas cambiar el código cada vez que aparezca forEach):
Código Javascript
:
Ver original// Polyfill:
if (window.NodeList && !NodeList.prototype.forEach) {
NodeList.prototype.forEach = Array.prototype.forEach;
}
// Debajo pones el resto de tu codigo en el que usas forEach:
var toggles = document.querySelectorAll('.selector');
var active = null;
function toggleSubmenus (event) {
var current = event.target;
var isCurrentActive = current === active;
toggles.forEach(function (toggle) {
toggle.classList.toggle('visible', toggle === current && !isCurrentActive);
});
active = isCurrentActive ? null : current;
}
toggles.forEach(function(toggle) {
toggle.addEventListener('click', toggleSubmenus);
});