Здравствуйте, я сейчас новичок в 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 увеличивается, как он может точно индексировать мою кнопку? Ну спасибо заранее
Если у вас возникли проблемы с итерацией в целом, что это, я хотел бы оставить вас эти учебники: Массив итерацию, итерацию В целом.
Теперь для объяснения того, что делает ваш код.
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'))
})
}
Код, который вы написали выше, добавляет событие 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
})
}