#javascript
Вопрос:
Все еще изучаю JavaScript, и я, кажется, не могу понять, почему мой первый ввод удваивается после выполнения второго числа. Например, «1 » отлично отображается на экране результатов, но когда я нажимаю второй ввод на «2», надеясь, что получится 1 2, вместо этого он показывает мне 112 2. Попытался ввести его в сохраненный ввод после первого ввода, но все еще не могу понять этого. Вот мой код
https://codepen.io/Kaytin143/pen/bGRjQqx
let firstInput = '';
let storedInput = '';
let secondInput = '';
let currentOp = '';
const results_div = document.querySelector('.screen')
const numberBtns = document.querySelectorAll('.numbers')
numberBtns.forEach((numbers) => {
numbers.addEventListener('click', () => {
firstInput = numbers.value;
storedInput = firstInput;
results_div.innerHTML = firstInput;
numberBtns.forEach((numbers) => {
numbers.addEventListener('click', () => {
secondInput = numbers.value;
results_div.innerHTML = storedInput currentOp secondInput;
})
})
//second Input
})
})
// listeners for operators //
const operatorBtns = document.querySelectorAll('.operator');
const clearBtn = document.querySelector('.c');
operatorBtns.forEach((operators) => {
operators.addEventListener('click', () => {
currentOp = operators.value;
results_div.innerHTML = firstInput currentOp;
})
})
Комментарии:
1. Пожалуйста, предоставьте
html
также свой файл, чтобы мы могли воспроизвести ваш код…2. вы инициализируете
firstInput
как astring
, поэтому при выполнении операции «плюс» она будет объединять строку вместо добавления числа3. Вы создаете несколько экземпляров своих слушателей и добавляете их несколько раз к каждой кнопке.
4. @Рикардо Добавил мою ссылку на код в описание
5. @kshetline просто хотел сказать спасибо за то, что указал на это! В этом было гораздо больше смысла, и я нашел способ обойти это.