Я обычно делаю так:
<button onclick="run()">run()</button>
<script type="text/javascript">
function run(){
if (!arguments.callee.runTimes) arguments.callee.runTimes = 0;
if (++arguments.callee.runTimes > 3){
alert("Эту функцию можно вызвать только три раза!");
return;
};
/* далее — обычный код функции */
alert("Я сработало!")
}
</script>
Ну, учитывая, что
arguments.callee
— это ссылка на функцию, которая сейчас выполняется.