2014-08-30 137 views
0

我創建了一個頁面,它將接收用戶輸入,然後將輸入與單詞進行比較。這個想法是,用戶有6次機會猜測這個詞。如果用戶猜字或跑出的猜測點擊將競猜改變開始新遊戲按鈕。我所做的都對。用jQuery重新加載頁面

這個想法是,然後用戶將點擊開始遊戲按鈕和頁面將重置爲原始值,這裏是我有一個問題。我的按鈕將變成新的值和新的ID,但是當我點擊按鈕時,遊戲仍然在播放,然後當我再次點擊它時,它會重置。爲什麼不在第一次點擊時休息?

下面是函數的部分看起來如何

else if (theGuess.toLowerCase() == magicWord.toLowerCase()) 
{ 
    //The user guesses the correct word 
    $("input[type=text]").ready(function() { $("#guestGuess").addClass("unblur"); }); 
    $("input[type=submit]").val("Start a New Game"); 
    $("input[type=submit]").attr("id","startNew"); 
$('#guestGuess').val(''); 
$('#startNew').click(function() { 
     location.reload(); 
}); 
magicWordResult = "Your guess was " + theGuess + "! Nice going!"; 
//document.writeln("Your guess was: " + guestGuess + "\nand the magic word is " + magicWord); 
} 

您可以在這裏找到整個代碼http://liveweave.com/psAsxh

回答

1

我能夠解決它。這是我如何能使其正常運行:

  • 當用戶用完了猜測的或猜測正確的工作提交按鈕的id被改爲startNew
  • 於是我加了一個雙條件空文本檢查代碼將檢查文本框是否爲空,並且代碼將檢查提交按鈕的id是否爲guestGuess

這就是我遇到問題的原因,因爲當我點擊空白窗口時,部分代碼也在運行。

我更新這裏http://liveweave.com/SZDKHz

代碼非常感謝你的所有幫助。

+0

很高興你自己修復它 - 小的細節只是爲了確保:你會用相應的計數器修復零件。目前,當你開始一個新遊戲時,它開始從0開始倒數​​(例如第二遊戲第二個錯誤猜測值-2等等)。 – 2014-08-31 18:11:50

0

我總是用location.href = location.href,刷新,但它的純JavaScript而不是jQuery。

0

只需使用location.reload(true) - 這將導致頁面從服務器而不是緩存中重新加載。作爲參考:https://developer.mozilla.org/en-US/docs/Web/API/Location.reload

更新:檢查你的遊戲,仍然看着破壞結果的線條。我剛剛爲點擊#guess#startNew而調用的函數添加了console.log,結果是:在max猜到#startNew函數被調用之後,但每下次點擊都會調用這兩個函數。 有一個非常簡單的(懶惰?)方法來修復它,而不必爲當前代碼不起作用而煩惱 - 只需爲#startNew添加第二個按鈕,而不是更改單個按鈕的功能,只需更改其可見性兩個按鈕。 一種不同的方法是在不改變按鈕的ID的情況下僅調用一個函數,並且調整功能以處理參數 - 比如function handleButton (value) {... }-並且對於猜測它只處理猜測部分的遊戲,開始新的它處理開始新的部分 - 只需撥打handleButton("guess")handleButton("new")。正如你已經編碼這個遊戲,我想你可以處理;)

+0

即使我添加位置。重新加載(true)我仍然必須在按鈕上點擊兩次才能重新加載。我不認爲我的網頁是從緩存中完成的。 – Tavo 2014-08-30 23:52:03

+0

好吧,我剛剛玩過你的遊戲兩次,我想我知道你的意思。將看看代碼,看起來它有什麼要做,你如何綁定/取消綁定提交的click()事件。 – 2014-08-31 00:04:38

+0

非常感謝你matthias_h。 – Tavo 2014-08-31 00:28:58