I am working on a simple calculator project
I am attempting to automate adding event listeners to the various numeric buttons (1-9).
The event listeners will listen to click events on the buttons leading to a change in the display section of the HTML (class = .display)
key value pairs being b1-b9 containing the various corresponding values.
I have come up with the below FOR EACH loop. For some reason it causes all numerical buttons to apply the number 9; which i believe is the cause of the for each loop.
I am unsure how to quite fix it. I have also come up with an alternative FOR loop that leads to another problem. pairs[Properties[i]].toString() returns undefined.
interestingly if i swap pairs[Properties[i]].toString() out to just i then the SAME issue occurs
Help really appreciated and thank you..
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;
        })
    };
};
Expected should be clicking of 1 to add a string "1" to the current string of the calculator, so on .
 
     
     
    