Задать вопрос
@olya_097

Почему не i++ в шестой строке?

function removeClass(obj,cls){
var classes=obj.className.split(" ");
for(var i=0;i<classes.length;i++){
if(classes[i]==cls){
	classes.splice(i,1);
  i--; // почему здесь не i++ ?
			}
	}

obj.className=classes.join(" ");
}

var obj = {
  className: 'open menu menu'
}

removeClass(obj, 'blabla');
removeClass(obj, 'menu')
alert(obj.className) // open
  • Вопрос задан
  • 136 просмотров
Подписаться 1 Простой 1 комментарий
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Фронтенд-разработчик
    10 месяцев
    Далее
  • Skillfactory
    Профессия Веб-разработчик
    12 месяцев
    Далее
  • Нетология
    Fullstack-разработчик на Python + нейросети
    20 месяцев
    Далее
Решения вопроса 1
Minifets
@Minifets
Hello world!!!
После удаления из массива например 4-ого элемента, 5-ый станет 4-ым, и нам нужно продолжить обход массива с 4-ого, вместо 5-ого. Если вставить i++, то обход продолжится на 6-ом элементе, т.е. мы пропустим 2 индекса.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
for(var i=0;i <classes.length;i++
){
..
 i--; // почему здесь не i++ ?
..
			}
	}

А зачем перескакивать через элемент при срабатывании условия? Может, логичнее проверить условие еще раз, вдруг в classes[i] есть еще одно вхождение cls?
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы