#javascript #if-statement #queryselector
#язык JavaScript #если-заявление #селектор запросов
Вопрос:
Здравствуйте, я делаю простой счетчик, который считает до 3 каждый раз, когда я нажимаю на кнопку. Счетчик работает просто отлично, потому что я вижу, как он меняется в консоли. Проблема в том, что мой JS не влияет на CSS. Когда я удаляю операторы else и оставляю только один, это тот, который работает.
CSS. примечание: strongAttackBtn и strongAttackBtnLoading находятся в одном и том же div.
.strongAttackBtn { height: 50px; width: 150px; color: black; font-weight: 800; } .strongAttackBtnLoading { position: absolute; height: 50px; width: 150px; background-color: rgba(0,0,0,0.5); }
JS
const strongAttackBtnLoading = document.querySelector('.strongAttackBtnLoading'); const strongAttackBtn = document.querySelector('.strongAttackBtn'); let strongAttackCounter = 0; if (strongAttackCounter === 3) { strongAttackBtnLoading.style.width = '150px'; } else if (strongAttackCounter === 2) { strongAttackBtnLoading.style.width = '100px'; } else if (strongAttackCounter === 1) { strongAttackBtnLoading.style.width = '50px'; } else if (strongAttackCounter === 0) { strongAttackBtnLoading.style.width = '0px'; } strongAttackBtn.addEventListener('click', function(){ strongAttackCounter ; })
Комментарии:
1. ваш блок операторов if должен находиться внутри прослушивателя событий.
2. Все просто, я не знаю, о чем я думал. Спасибо
3. также вы могли бы сделать свой if/else одной строкой
strongAttackBtnLoading.style.width = (strongAttackCounter lt; 150 ? strongAttackCounter * 50 : 150) 'px';
4. Это работает просто великолепно, Лоуренс. Что делает знак»:»? Я не понимаю, почему этот код работает.
Ответ №1:
Попробуйте этот код.
Вы должны назначить CSS
оба DIVs и ввести код оператора if в функцию addEventListener
click.
const strongAttackBtn = document.querySelector('.strongAttackBtn'); const strongAttackBtnLoading =document.querySelector('.strongAttackBtnLoading'); var strongAttackCounter = 0; strongAttackBtn.addEventListener('click', function(){ strongAttackCounter ; if (strongAttackCounter === 3) { strongAttackCounter=0; // set it to zero again; strongAttackBtnLoading.style.width = '150px'; strongAttackBtn.style.width = '150px'; } else if (strongAttackCounter === 2) { strongAttackBtnLoading.style.width = '100px'; strongAttackBtn.style.width = '100px'; } else if (strongAttackCounter === 1) { strongAttackBtnLoading.style.width = '50px'; strongAttackBtn.style.width = '50px'; } else if (strongAttackCounter === 0) { strongAttackBtnLoading.style.width = '0px'; strongAttackBtn.style.width = '0px'; } })
.strongAttackBtn { height: 50px; width: 150px; color: black; font-weight: 800; } .strongAttackBtnLoading { position: absolute; height: 50px; width: 150px; background-color: rgba(0,0,0,0.5); }
lt;div class="strongAttackBtnLoading"gt;lt;input class="strongAttackBtn" type="button" value="strongAttackBtn"gt;lt;/divgt;
Комментарии:
1. Я обновляю код, который пропустил часть примечания.