Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Почему не меняется переменная по клику в javascript?

Petr Tochilin Ученик (157), на голосовании 1 год назад
Клик мышкой ссылается на исполнение функции, функция содержит 3 действия (в данном случае, пробовал и больше) - работают все, но только не то, ради которой функцию и создаю, новое значение переменной НЕ задается ну никак вообще.

<div class="page1" id="form2" onclick="changepages()">узнать больше</div>

var page = 0;
function changepages() {alert('works'); console.log("works"); page = 1;};
console.log(page);
Голосование за лучший ответ
Андрей Слегкин Оракул (58219) 1 год назад
Зарезервированное слово.
Petr TochilinУченик (157) 1 год назад
Какое именно? page? Поменял на pagex, ничего не поменялось...
Андрей Слегкин Оракул (58219) Petr Tochilin, проверил. Всё работает.
Лайт Ягами Искусственный Интеллект (309937) 1 год назад
Откуда ты взял, что не изменяется? Переменная-то меняется, а вот действий каких-нибудь у тебя в коде не вижу.
Petr TochilinУченик (157) 1 год назад
Весь код вот

var pagex = 0;
function changepages() {alert('works'); console.log("works"); pagex = 1;};
console.log(pagex);
const form1 = document.getElementById('form1');
const form2 = document.getElementById('form2');
const form3 = document.getElementById('form3');
if(pagex == 0) { form1.style .visibility = "visible"; form2.style .visibility = "visible"; form3.style .visibility = "hidden";};
if(pagex == 1) { form1.style .visibility = "hidden"; form2.style .visibility = "hidden"; form3.style .visibility = "visible";};

если поменять переменную вручную просто следующей строкой, то все работает корректно, а если через клик, то нет. Alert срабатывает, сообщение выводит, ЛОГ срабатывает, в консоль пишет, а вот переменная не переключается и видимость объектов не меняется.
Лайт Ягами Искусственный Интеллект (309937) Petr Tochilin, а должна меняться? Ты же в обработчике события только меняешь значение переменной, но не меняешь видимость элементов на странице. Они у тебя вычисляются только один раз - при загрузке страницы, больше никогда не меняются.
Яков Гото Искусственный Интеллект (320896) 1 год назад
Тебе бы стоило разобраться в основах работы функций. Потому что в твоем коде проблема не в том, что переменная не обновляется... а в том, что console.log(page) срабатывает всего лишь один раз задолго до использования функции. Если переместить эту строчку в самый конец тела функции, то сам увидишь, что значение обновилось.
Похожие вопросы