0x000D7
разрешается в число , 215, которое не является textContent
кнопки ×
. Скорее просто проверьте, является ли textContent ×
:
const myDiv = document.querySelector('#display');
const myButtons = document.querySelectorAll('button');
myButtons.forEach((button) => {
button.addEventListener('click', () => {
if(button.textContent === '×') {
// call on some operator function
console.log('× clicked');
} else {
myDiv.textContent += button.textContent;
}
});
});
<div id=display></div>
<button>1</button>
<button>2</button>
<button>×</button>
В качестве альтернативы, если у вас есть лоты символьных кнопок, вы можете рассмотреть возможность сделать обратное - проверить, является ли textContent
число, и, если оно есть, добавить к myDiv
. textContent
const myDiv = document.querySelector('#display');
const myButtons = document.querySelectorAll('button');
myButtons.forEach((button) => {
button.addEventListener('click', () => {
if (button.textContent.match(/^\d+$/)) {
myDiv.textContent += button.textContent;
} else {
console.log('non-digit button clicked');
}
});
});
<div id=display></div>
<button>1</button>
<button>2</button>
<button>×</button>
Альтернативой добавлению большого количества отдельных слушателей с закрытием над каждым будет использование делегирования события в контейнере button
s:
const myDiv = document.querySelector('#display');
document.querySelector('#buttons').addEventListener('click', ({ target }) => {
if (!target.matches('button')) return;
if (target.textContent.match(/^\d+$/)) {
myDiv.textContent += target.textContent;
} else {
console.log('non-digit button clicked');
}
});
<div id=display></div>
<div id="buttons">
<button>1</button>
<button>2</button>
<button>×</button>
</div>