Создать функцию для события

Я хочу генерировать функции для события с помощью цикла. Конечно, в приведенном ниже примере, при нажатии кнопки, она будет давать значение 100, а не 1.

    <body>
    <button id="b1">klickMeNow</button>
    <script>
      var i=1;
      document.getElementById("b1").addEventListener("click", function() { alert(i);}, false);
      var i=100;
      </script>        
    </body>

Я пришел с этим решением, используя функцию генерации:

    <button id="b1">klickMeNow</button>
    <script>
      var i=1;
      document.getElementById("b1").addEventListener("click", generate(i), false);
      var i=100;   
        
      function generate(i1) {
        f =  function () {alert(i1);};
        return f;
      }
    </script>

Есть ли более элегантное решение без написания функции генерации?

2 ответа

Извините за путаницу. Если вы запускаете первый фрагмент, он дает 100 в результате, но я хочу, чтобы он печатал 1, фактическое значение, когда я связываю функцию.

Вы ищете простую функцию подсчета?

var count = (function() {
  var c = 0;
  return function() {
    return ++c;
  }
}());

document.getElementById('b1').onclick = function() {
  alert(count());
}
<button id="b1">Click Me</button>

Другие вопросы по тегам