Javascript 需要帮助才能完成这个关闭吗

Javascript 需要帮助才能完成这个关闭吗,javascript,Javascript,我希望能够从另一个函数调用此函数,而不是像下面的代码中那样使用事件处理程序。我不想使用element.onclick,而是想执行以下操作 window.myFunction = (function(){ //the rest of the closure code//} 在这里我可以调用myFunction();从另一个功能,而不必单击按钮 var element = document.getElementById('button'); element.onclick = (function

我希望能够从另一个函数调用此函数,而不是像下面的代码中那样使用事件处理程序。我不想使用element.onclick,而是想执行以下操作

window.myFunction = (function(){ //the rest of the closure code//}
在这里我可以调用myFunction();从另一个功能,而不必单击按钮

var element = document.getElementById('button');

element.onclick = (function() {
// init the count to 0
var count = 0;

return function(e) {
    //count
    count++;

    if (count === 3) {
        // do something every third time
        alert("Third time's the charm!");
        //reset counter
        count = 0;
    }
};
})();

这应该适合您:

var element = document.getElementById('button');

var f = (function() {
    var count = 0;

    return function(e) { //e is not really needed, but left in there anyway
      //count
      count++;

      if (count === 3) {
        // do something every third time
        alert("Third time's the charm!");
        //reset counter
        count = 0;
      }
  };
})();
element.onclick = f;
小提琴:

var element = document.querySelector('#button'),
    count = 0;

function myCountFunction(){
   count = ++count % 3; // loop count
   if ( !count ) {      // if count is 0
      alert("Third time's the charm!");
   }
}

//On click:
element.addEventListener('click', myCountFunction, false);


// Immediately:
myCountFunction(); // this will trigger the event once

// Inside some other function: 
function myOtherFunction(){
   myCountFunction();  
} 

除了将闭包分配给变量之外,您能解释一下有什么不同吗?如果只是变量赋值解决了问题,那为什么呢?您的演示中有一个问题:
按钮
@RokoC.Buljan:谢谢,我改成了这样,到底是什么问题?您对原始代码做了很多更改,但还是做了很好的更改。“立即”的评论已不再真实,充其量也不再具有误导性。它不是立即调用的。@Khnle所说的“立即”是指在解析代码和DOM就绪后调用该函数。在我们看来。。。“马上”。不要与其他东西(生活等)混淆。谢谢你的留言。