xandri
@xandri
Люблю айтшечку

Не могу понять почему не работает цикл if {while}?

Закидываю скрипт в хромовскую консоль и страница полностью зависает
У меня проблеммы с написанием цыклов от слова совсем, прошу разьяснить или дать ссылочку куда почитать :)
if (jQuery("#header-outer").hasClass( "at-top" )) { 
	jQuery( ".cd-popup-container" ).addClass( "menu-margin" ); 
}while (jQuery("#header-outer").hasClass("invisible")) {
    	jQuery( ".cd-popup-container" ).removeClass( "menu-margin" );
	}

использую jQuery, а не $ что бы понимала консоль хрома
  • Вопрос задан
  • 129 просмотров
Решения вопроса 2
TommyV888
@TommyV888
-
У вас получается бесконечный while т.к. jQuery("#header-outer").hasClass("invisible") возвращает true. Если вы хотите перебрать элементы, то используйте each:
jQuery("#header-outer .invisible").each(function(){
...
});

Либо предусмотрите выход из цикла.
Также конструкции if while на сколько мне известно не существует, оберните цикл в блок else
Ответ написан
С самим кодом все нормально. Проблема с логикой. Если убрать лишние фигурные скобки то получится:
if (jQuery("#header-outer").hasClass( "at-top" )) 
  jQuery( ".cd-popup-container" ).addClass( "menu-margin" ); 

while (jQuery("#header-outer").hasClass("invisible")) 
   	jQuery( ".cd-popup-container" ).removeClass( "menu-margin" );

Т.е. ничего особенного. Другие возникают вопросы. Ищется элемент с id = header-outer. Id по определению может быть только один, неважно имеет он класс invisible, или не имеет, какой тут может быть while, если в цикле классы этого элемента не изменяются, функций, что могут изменить его состояние не вызывается. IMHO стОит не в хромовской панели код вводить, а записать в файл и отлаживать в хромовском отладчике присваивая промежуточные значения переменным и наблюдая их значение.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы