我有这个代码

<input type="button" id="buttona" onClick="myFunction('this is buttonA')" />
<input type="button" id="buttonb" onClick="myFunction('this is buttonB')" />
<script>
function myFunction(message) {
  var count=10;
  count = count + 1;
  alert(message + ":" + count);
}
</script>

我想要的是当用户单击buttonA时显示消息“这是buttonA:11”,如果用户再次单击buttonA,则显示消息“这是buttonA:12”,如果用户单击buttonB,则显示消息“这是buttonB” :11“。我不想定义全局计数器变量,我想在函数上“封装”。即如果我添加:
<input type="button" id="buttonc" onClick="myFunction('this is buttonC')" />;

具有相同的功能而无需定义几乎所有其他内容。

计数器彼此独立并保留值。使我的问题有意义吗?

提前致谢

最佳答案

您可以考虑使用闭包。基本思想是创建一个创建“myFunctions”的函数,而不是使用单个“myFunction”。

function makeCounter(message){
    //We move count outside the onclick handler, so it can increment
    //but its not a global since we are inside another function!
    var count = 10;
    return function(){
        count = count + 1;
        alert(message + ":" + count);
    };
}

//now use makeCounter to create encapsulated onclick handlers:

document.getElementById("buttona").onclick = makeCounter("This is button A");
document.getElementById("buttonb").onclick = makeCounter("This is button B");

08-18 23:57