цикл через кнопку калькулятора в JS

1

Здравствуйте, я сейчас новичок в javascript и у меня возникли проблемы с пониманием реальной работы цикла for в калькуляторе. Я хочу знать, почему мы перебираем кнопки и как JavaScript работает за кулисами.

Вот код, с которым я борюсь:

let keypadBtn = document.querySelectorAll(".op-btn");
    
for(let i = 0; i < keypadBtn.length; i++){
  keypadBtn[i].addEventListener("click",function(){
    console.log(keypadBtn[i].getAttribute("data-num"));
  })
  }
<div class="buttons">
    		<div class="op-btn btn-yellow" data-num = "*">*</div>
    		<div class="op-btn btn-yellow" data-num = "/">/</div>
    		<div class="op-btn btn-yellow" data-num = "-">-</div>
    		<div class="op-btn btn-yellow" data-num = "+">+</div>
    		<div class="op-btn btn-white" data-num = ".">.</div>
    		<div class="op-btn btn-white" data-num = "9">9</div>
    		<div class="op-btn btn-white" data-num = "8">8</div>
    		<div class="op-btn btn-white" data-num = "7">7</div>
    		<div class="op-btn btn-white" data-num = "6">6</div>
    		<div class="op-btn btn-white" data-num = "5">5</div>
    		<div class="op-btn btn-white" data-num = "4">4</div>
    		<div class="op-btn btn-white" data-num = "3">3</div>
    		<div class="op-btn btn-white" data-num = "2">2</div>
    		<div class="op-btn btn-white" data-num = "1">1</div>
    		<div class="op-btn btn-white" data-num = "0">0</div>
    		<div class="op-btn btn-green">=</div>
    		<div class="op-btn btn-red">C</div>
</div>

На самом деле я знаю, как будет работать код, проблема в том, что я хочу знать, как цикл for может получить точное значение кнопки путем цикла, а не любое другое значение, поскольку переменная "i" продолжает увеличиваться на значение 1. if "i увеличивается, как он может точно индексировать мою кнопку? Ну спасибо заранее

  • 0
    Вы перебираете список кнопок, чтобы прослушать событие нажатия. Одно дело отобразить калькулятор, но взаимодействовать с ним, когда вы нажимаете что-то, что вы ожидаете, что javascript сделает что-то, что делает addEventListener.
  • 0
    Научитесь использовать map () для.
Теги:

2 ответа

1

Если у вас возникли проблемы с итерацией в целом, что это, я хотел бы оставить вас эти учебники: Массив итерацию, итерацию В целом.

Теперь для объяснения того, что делает ваш код.

let keypadBtn = document.querySelectorAll('.op-btn') // Grabs all elements containing this the '.op-btn' class

for (let i = 0; i < keypadBtn.length; i++) { // Initializing the for loop
     keypadBtn[i].addEventListener('click', () => { // Attach the click event to each of the buttons
        // Once click this 'console.log' will fire printing 
        // the element you clicked to browser console
        console.log(keypadBtn[i].getAttribute('data-num')) 
     })
}
  • 0
    На самом деле я знаю, как будет работать код, проблема в том, что я хочу знать, как цикл for может получить точное значение кнопки за счет цикла, а не любое другое значение, так как переменная "i" продолжает увеличиваться на значение 1.if "i увеличивается, как он может точно индексировать мою кнопку? Ну спасибо заранее
  • 0
    Вы получаете список индексов кнопок от 0 до Количество кнопок и берете одну кнопку за раз и прикрепляете к ней событие щелчка.
Показать ещё 3 комментария
0

Код, который вы написали выше, добавляет событие click ко всем кнопкам. Цикл здесь для прохождения каждой кнопки (div). Прочитайте комментарии ниже:

 let keypadBtn = document.querySelectorAll(".op-btn"); //Select all divs. It picks all the items with class name .opt-btn

    for(let i = 0; i < keypadBtn.length; i++){ 
        keypadBtn[i].addEventListener("click",function(){ //attach click event to each button
            console.log(keypadBtn[i].getAttribute("data-num")); // you can get the values here and based on it you can calculate the result
         })
    }

Ещё вопросы

Сообщество Overcoder
Наверх
Меню