为事件生成函数

时间:2017-10-02 09:19:16

标签: javascript function events

我想通过循环为事件生成函数。当然在下面的例子中,当按下按钮时,它将给出值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 个答案:

答案 0 :(得分:0)

您是否希望获得简单的计数功能?

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

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

答案 1 :(得分:0)

对不起,我很抱歉。 如果你运行第一个片段,结果会给出100,但是我希望它打印1,这是绑定函数时的实际值。