2012-12-26 128 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

輝煌。謝謝您的幫助。我會熟悉解除綁定功能。 –