Показать сообщение отдельно
  #1 (permalink)  
Старый 06.12.2017, 20:07
Интересующийся
Отправить личное сообщение для ArtyomZaitsev Посмотреть профиль Найти все сообщения от ArtyomZaitsev
 
Регистрация: 29.11.2017
Сообщений: 11

Объясните, пожалуйста, логику примера
Пожалуйста, объясните логику этого примера, не могу совсем разобраться.
Сначала мы вызываем функцию 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();
Ответить с цитированием