Поместите обработчик событий в закрытие, иначе btnNum
всегда будет последним, когда будет нажата кнопка.
var prizes = ['A Unicorn!', 'A Hug!', 'Fresh Laundry!'];
for (var btnNum = 0; btnNum < prizes.length; btnNum++) {
(function(position) {
document.getElementById('btn-' + btnNum).onclick = function() {
// tell her what she's won!
alert(position);
};
})(prizes[btnNum]);
}
<button id="btn-0">Button 1!</button>
<button id="btn-1">Button 2!</button>
<button id="btn-2">Button 3!</button>
В качестве альтернативы вы можете просто использовать let
.
var prizes = ['A Unicorn!', 'A Hug!', 'Fresh Laundry!'];
for (let btnNum = 0; btnNum < prizes.length; btnNum++) {
let position = prizes[btnNum];
document.getElementById('btn-' + btnNum).onclick = function() {
// tell her what she's won!
alert(position);
};
}
<button id="btn-0">Button 1!</button>
<button id="btn-1">Button 2!</button>
<button id="btn-2">Button 3!</button>