Пожалуйста, объясните логику этого примера, не могу совсем разобраться.
Сначала мы вызываем функцию setupHelp(), у нас в ней есть массив объектов, есть счетчик. В счетчике мы от i=0 до i=2 записываем в переменную item объекты из массива helpText. Дальше строка описывает действие, которое запускает функцию makeHelpCallback(), в данном случае onfocus. Затем мы вызываем функцию makeHelpCallback(), которая запускает функцию showHelp(). Вопросы:
-почему это работает?
-как счетчик запоминает (и куда) что делать, если мы взяли в фокус поле ввода? Разве он не должен проработать от 0 до 2 и забыться?
function showHelp(help) {
document.getElementById('help').innerHTML = help;
}
function makeHelpCallback(help) {
return function() {
showHelp(help);
};
}
function setupHelp() {
var helpText = [
{'id': 'email', 'help': 'Ваш адрес e-mail'},
{'id': 'name', 'help': 'Ваше полное имя'},
{'id': 'age', 'help': 'Ваш возраст (Вам должно быть больше 16)'}
];
for (var i = 0; i < helpText.length; i++) {
var item = helpText[i];
document.getElementById(item.id).onfocus = makeHelpCallback(item.help);
}
}
setupHelp();