Хорошо, поначалу это действительно нехорошо, зачем вам когда-либо проверять равенство (и использовать оператор ===
для тех же типов):
numbers.addEventListener('click', e => {
// selecting and adding nr to display
if(e.target.innerHTML == '1'){
display.innerHTML += '1';
}else if (e.target.innerHTML == '2'){
display.innerHTML += '2';
}else if (e.target.innerHTML == '3'){
display.innerHTML += '3';
}else if (e.target.innerHTML == '4'){
display.innerHTML += '4';
}else if (e.target.innerHTML == '5'){
display.innerHTML += '5';
}else if (e.target.innerHTML == '6'){
display.innerHTML += '6';
}else if (e.target.innerHTML == '7'){
display.innerHTML += '7';
}else if (e.target.innerHTML == '8'){
display.innerHTML += '8';
}else if (e.target.innerHTML == '9'){
display.innerHTML += '9';
}else if (e.target.innerHTML == '0'){
display.innerHTML += '0';
}
});
Вы можете переписать это так:
numbers.addEventListener('click', e => {
display.innerHTML += e.target.innerHTML;
}
И, если я правильно понял, numbers
должен быть массивом кнопок с числами, но querySelector возвращает только первое вхождение, поэтому он вернет только первую кнопку. Вы должны использовать querySelectorAll и переписать его следующим образом:
const numbersButtons = document.querySelectorAll('.numbers');
// convert to array, because we can't iterate over querySelectorAll result
Array.from(numbersButtons).forEach((button,index) => {
button.addEventListener('click', e => {
display.innerHTML += e.target.innerHTML;
}
});
Функции, вероятность, тоже должны быть массивом, и вы можете сделать код более понятным, используя, например, карту функций:
const functionsMap = {
'+': add,
'-': subtract
// and other functions..
}
И назовите их так:
// will return add function
const targetFunc = functionsMap['+'];
// call with parameters
targetFunc(1,2);
И да, когда вы сделаете это:
functionVal = divide();
Вы не передаете ссылку на функцию, вы выполняете его, поэтому functionVal
сохранит результат выполнения функции, и да, он вернет NaN
, потому что вы выполняете его без параметров, попробуйте это в консоли:
function add (a,b){return a + b}
console.log(add());
Еще есть много ошибок, которые я не буду анализировать, поэтому советую go вернуться в самое начало и хорошо позаботиться о том, что вы делаете.