Я работаю над проектом простого калькулятора
Я пытаюсь автоматизировать добавление прослушивателей событий для различных цифровых кнопок (1-9).
Слушатели событий будут прослушивать события нажатия на кнопках, приводящие к изменению в разделе отображения HTML (class = .display)
парами ключевых значений являются b1-b9, содержащие различные соответствующие значения.
Я придумал нижеследующий цикл FOR EACH. По некоторым причинам это заставляет все цифровые кнопки применять число 9; который я считаю причиной каждого цикла.
Я не уверен, как это исправить. Я также придумал альтернативный цикл FOR, который приводит к другой проблеме. pair [Properties [i]]. toString () возвращает неопределенное значение.
интересно, если я поменяю пары [Properties [i]]. ToString () на i, то ТО ЖЕ проблема возникает
Помощь очень признателен и спасибо ..
const pairs = {
b1: 1,
b2: 2,
b3: 3,
b4: 4,
b5: 5,
b6: 6,
b7: 7,
b8: 8,
b9: 9,
};
var Properties = Object.keys(pairs);
function loadButtons () {
for (var item in pairs) {
//for each key property in pairs
console.log(item);
let targetCell = document.querySelector("." + item.toString())
// querySelector only targets the FIRST element found
// in this case only 1 for that name
console.log(targetCell);
targetCell.addEventListener('click', () => {
// you want it to manipulate the display as and when clicked
var currentDisplay = document.querySelector(".display").innerHTML.toString();
newDisplay = currentDisplay + pairs[item].toString();
document.querySelector(".display").innerHTML = newDisplay;
})
// console.log(pairs[item]);
// // pairs[item] retrieves the value to that "key"
}
};
function alternative() {
var i;
var Properties = Object.keys(pairs);
for (i = 0; i < Properties.length; i++) {
let targetCell = document.querySelector("." + Properties[i].toString())
// querySelector only targets the FIRST element found
// in this case only 1 for that name
console.log(targetCell);
targetCell.addEventListener('click', () => {
// you want it to manipulate the display as and when clicked
var currentDisplay = document.querySelector(".display").innerHTML.toString();
newDisplay = currentDisplay + pairs[Properties[i]].toString();
document.querySelector(".display").innerHTML = newDisplay;
})
};
};
Ожидается, что при нажатии кнопки 1 будет добавлена строка «1» к текущей строке калькулятора и т. Д.