2012-12-26 38 views
-2

我刚刚开始使用Javascript和jQuery,并在第一个项目中遇到了一些麻烦。我正在构建一个简单的21点游戏,这是第一次完美运行。JavaScript,在nth递归之后按指数函数调用函数

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

为什么在这种情况下,此代码的行为会有所不同,基于用户/计算机提供的通话,我该如何解决它?

的代码可以在www.calebdwilliams.com/blackjack找到

+7

请在这里发布最相关的代码部分。欢迎来到SO! – davidethell

回答

3

你的问题是在这里你的琐事函数中:

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

您连接最多点击功能的#hit元每单次玩游戏。那么,通过游戏JavaScript的后续时间只是添加额外的点击处理程序。该playGame方法内

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

请注意,您应该仍然使用您的代码更新此问题,以便该帖子有意义。否则这只会关闭。 – davidethell

+0

我应该如何发布代码?有没有一种首选的方法或坐姿礼仪?谢谢你的帮助。 –

+0

Caleb,问题已关闭,因此您现在可能无法更新它,但您想要做的是摘录与您的问题最相关的代码部分。在你的情况下,你并不知道哪个部分是这个问题,所以你可以把你的整个blackjackmod.js文件放在注释中。你缩进每行四个空格来告诉SO你正在输入代码。您将代码的范围越窄,粘贴的响应越好。所以,由于您怀疑#hitme点击是您刚刚粘贴playGame功能的问题。 – davidethell

2

您绑定的事件处理程序:那投手应该只有一次或者增加()玩笑的范围,否则前面的听众外应该被删除。

这意味着,每次运行它的时候它绑定额外的处理程序,以你想要的元素..

所以你需要在该方法结合之前解除绑定..

每当你做一个.click(...)做一个unbind('click')第一..

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

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

and

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

+1用于将解除绑定与点击处理程序内联。 – davidethell

+0

辉煌。谢谢您的帮助。我会熟悉解除绑定功能。 –