Изучаю тему по учебнику. В нем есть пример, который работает в сэндбоксе. Я его скопировал и переделал под свои нужды.
let calc = document.querySelector(".calc");
calc.addEventListener('click', function (event) {
if (event.target.className === 'button') {
console.log('Click!');
}
});
<div class="calc">
<div class="screen">
<p class="screen__p">2344
</div>
<div class="block">
<button class="button back">←</button>
<button class="button reset">C</button>
</div>
<div class="block block-wrap">
<button class="button num7">7</button>
<button class="button num8 pressed">8</button>
<button class="button num9">9</button>
<button class="button minus">-</button>
<button class="button plus">+</button>
<button class="button num4">4</button>
<button class="button num5">5</button>
<button class="button num6">6</button>
<button class="button multiple">×</button>
<button class="button divide">÷</button>
<button class="button num1">1</button>
<button class="button num2">2</button>
<button class="button num3">3</button>
<button class="button radical">√</button>
<button class="button power">X<sup>y</sup></button>
</div>
<div class="block block3">
<button class="button zero">0</button>
<button class="button dot">.</button>
<button class="button equally">=</button>
</div>
</div>
Почему мой вариант не работает?
.className
возвращает строку со всеми классами button zero
и т.д. Она не будет равна button
, но в тоже время подстрока button
будет в ней. Просто проверьте, есть ли слово button
в строке с помощью includes()
.
const calc = document.querySelector(".calc");
calc.addEventListener('click', function(event) {
if (event.target.className == 'button') {
console.log('Работает ===');
}
if (event.target.className.includes('button')) {
console.log('Работает includes');
}
});
<div class="calc">
<button class="button class1">Нет</button>
<button class="button class2">Нет</button>
<button class="button">Да</button>
</div>
А еще лучше написать так: event.target.classList.contains('button')
.
Ваш код:
const calc = document.querySelector(".calc");
calc.addEventListener('click', function(event) {
if (event.target.classList.contains('button')) {
console.log('Click!');
}
});
<div class="calc">
<div class="screen">
<p class="screen__p">2344
</div>
<div class="block">
<button class="button back">←</button>
<button class="button reset">C</button>
</div>
<div class="block block-wrap">
<button class="button num7">7</button>
<button class="button num8 pressed">8</button>
<button class="button num9">9</button>
<button class="button minus">-</button>
<button class="button plus">+</button>
<button class="button num4">4</button>
<button class="button num5">5</button>
<button class="button num6">6</button>
<button class="button multiple">×</button>
<button class="button divide">÷</button>
<button class="button num1">1</button>
<button class="button num2">2</button>
<button class="button num3">3</button>
<button class="button radical">√</button>
<button class="button power">X<sup>y</sup></button>
</div>
<div class="block block3">
<button class="button zero">0</button>
<button class="button dot">.</button>
<button class="button equally">=</button>
</div>
</div>
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Загорелся идеей добавить service worker при помощи workbox в существующий проект на WordPress, но столкнулся с одной проблемой: где его расположить и как...
При подключении к бд выдаёт ошибку "ER_ACCESS_DENIED_ERROR: Access denied for user 'gallium_quasar'@'ip-200-111-142-5pools
Подскажите пожалуйста , как решить подобную задачку ? ( была на собеседовании ) Не пойму, что делает последний аргумент ? Попытался получить...