Javascript,在第n次递归后以指数方式调用函数

时间:2012-12-26 21:11:34

标签: javascript

我刚刚开始使用Javascript和jQuery,并且在我的第一个项目上遇到了一些麻烦。我正在构建一个简单的二十一点游戏,它第一次完美运行。

一旦第一手牌结束,一旦点击了一个按钮#playAgain,游戏就应该通过调用递归的playGame()函数重置并再次播放。这工作正常,但在执行playAgain后,我的hitMe函数会中断用户。它是一个系统的代码,因此用户和PC都在执行相同的操作,但它对用户的行为不同,并开始根据播放的游戏数量以指数方式调用hitMe函数。

为什么这个代码在这种情况下的行为会有所不同,这取决于提供呼叫的用户/计算机,我该如何解决?

该代码可在www.calebdwilliams.com/blackjack

找到

2 个答案:

答案 0 :(得分:3)

你的问题出在你的playGame函数中:

$("#hit").click(function(){

每次玩游戏时,您都会将点击功能连接到#hit元素。那么,通过游戏javascript的后续时间只是添加额外的点击处理程序。应该只在playGame()范围之外添加一次,否则应该删除以前的侦听器:

$("#hit").unbind();

答案 1 :(得分:2)

您可以在playGame方法中绑定事件处理程序。

这意味着每次运行它都会将其他处理程序绑定到您想要的元素上。

所以你需要在该方法绑定之前取消绑定..

每当你.click(...)unbind('click')时,首先......

$("#stand").unbind('click').click(function(){

$("#hit").unbind('click').click(function(){

$("#playAgain").unbind('click').click(function(){