Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Не срабатывает else if (https://javascript.ru/forum/misc/80819-ne-srabatyvaet-else-if.html)

Aleksandr Gumanat 08.08.2020 00:19

Не срабатывает else if
 
Привет всем! Проблема такая: не срабатывает else if. Вот код:
else if (step == 3){
		view2.style.display = 'none';
		view3.style.display = 'block';
		discount++;
		discountElem.innerHTML = discount;
		step++;
		console.log('dssdds');
	}
	else if (step == 4){
		console.log('dssddassaass');
		// view3.style.display = 'none';
		// view4.style.display = 'block';
		// step++;
	}
}
Код работает таким образом: выполняеться функция, срабатывает if и увеличиваеться переменная step на 1, потом else if проверяет переменную и если она равна 1, срабатывает и увеличивает. И тут по не понятной причине else if тупо перестал работать. Не могу понять как это обьяснить:help:

Nexus 08.08.2020 00:46

Цитата:

Сообщение от Aleksandr Gumanat
Код работает таким образом

Не выдавайте желаемое за действительное.

Код работает несколько иным образом.
У вас есть цепочка из if .. else if. Условия операторов if будут проверяться до тех пор, пока в этой цепочке не найдется первый оператор, выражение которого будет трактоваться как true. После нахождения такого оператора будет выполнен код его блока, а все остальные проверки будут отброшены, как ненужные.

Чтобы код работал так, как вы это описали, удалите из из своего кода else.

Угадайте, сколько раз вызовется функция alert:
if (true) {
    alert('block 1');
} else if (true) {
    alert('block 2');
}


А в этом случае?
var variable = 1;
if (variable === 1) {
    alert(1);
    variable++;
} else if (variable === 2) {
   alert(2);
   variable = 0;
}

if (variable === 0) {
    alert(3);
    variable === 4;
} else if (variable === 2) {
    alert(4);
}


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