2015-03-31 123 views
0

我試圖製作一個hang子手遊戲,如果選擇了錯誤的字母,它會在hangman模型中添加一個正文部分。我希望顯示左臂後顯示,右臂顯示在下一個字母輸入。不過,他們都表現出了第一個錯誤輸入用javascript交換img標籤

//JavaScript document 
var answer = ['h', 'a', 'n', 'g', 'm', 'a', 'n']; 
var wrong= ['b' ,'c' ,'d', 'e' ,'f' ,'i' ,'j' ,'k' ,'l','o' ,'p', 'q', 'r', 's' ,'t', 'u', 'v' ,'w', 'x' ,'y' ,'z']; 
var letters = /^[a-zA-Z]*$/; 
var answerLetter = document.getElementsByClassName("answer_char"); 
var letterpool= ['a ' ,'b ' ,'c ' ,'d ', 'e ' ,'f' ,'g ' ,'h ' ,'i ' ,'j ' ,'k ' ,'l ', 'm ' ,'n ' ,'o ' ,'p ', 'q ', 'r ', 's ' ,'t ', 'u ', 'v ' ,'w ', 'x ' ,'y ' ,'z ']; 
var leftarm = false 

onload = init; 
function init(){ 
    updateDisplay() 

    document.getElementById("guess_button").onclick = function enter() { 
     var userGuess = document.getElementById("guess_text").value; 
     // This uses String.prototype.match() used too see if its both a letter and a single entry 
     if(userGuess.match(letters) && userGuess.length === 1) { 
      for (var i = 0; i < answer.length; i++) { 
       if (userGuess === answer[i]) 
        // answer[i] correlates to answerLetter[i]. 
        answerLetter[i].innerHTML = userGuess; 
      } 
      if(userGuess.match(letters) && userGuess.length === 1) { 
       for (var i = 0; i < wrong.length; i++) { 
        if (userGuess === wrong[i]) 
         document.getElementsByTagName("img")[1].src="img/leftarm_on.png"; 
        leftarm = true; 
       } 
       if(leftarm= true){ 
        document.getElementsByTagName("img")[3].src="img/rightarm_on.png"; 
       } 

      } 
     }else { 
      window.alert('please enter one letter, numbers need not apply .'); 
     } 
    } 

} 
+0

'leftarm = true'賦值不在'if(userGuess === wrong [i])'內。 – Barmar 2015-03-31 00:49:07

回答

1
 if (userGuess === wrong[i]) 
     document.getElementsByTagName("img")[1].src="img/leftarm_on.png"; 
     leftarm = true; 
     } 
     if(leftarm= true){ 
      document.getElementsByTagName("img")[3].src="img/rightarm_on.png"; 
     } 

你測試後彼此這裏的條件 - 當你在第一盤leftarm,它會已經真正在第二位。順便說一句,你沒有使用==比較,但=作業;實際上根本沒有必要做這種比較。它應該是

if (userGuess === wrong[i]) { 
    if (!leftarm) { 
     document.getElementsByTagName("img")[1].src="img/leftarm_on.png"; 
     leftarm = true; 
    } else if (leftarm) { 
     document.getElementsByTagName("img")[3].src="img/rightarm_on.png"; 
    } 
} 
+0

我覺得其他的東西是否會成爲關鍵,因爲儘管當我輸入它時,我總是得到一個意外的標記。一定是做錯了。你的版本似乎工作。謝謝! – 2015-03-31 01:12:53

+0

@moliminous:當barmar的編輯顯示,你的第二個'if'語句實際上被放置在'for'循環之外。在這裏放置一個'else'將會出現語法錯誤。獲得的經驗:始終正確(自動)縮進代碼,並找到奇怪的放置圓括號! – Bergi 2015-03-31 01:18:25

0

看看你的代碼這樣的邏輯:

for (var i = 0; i < wrong.length; i++) { 
     if (userGuess === wrong[i]) 
     document.getElementsByTagName("img")[1].src="img/leftarm_on.png"; 
     leftarm = true; 
     } 
     if(leftarm= true){ 
      document.getElementsByTagName("img")[3].src="img/rightarm_on.png"; 
     } 

設置leftarm爲真後,立即您再檢查,看它是否是真的,如果是這樣,打開右手臂。

+0

我已經注意到了,但我正在尋找一種方法來暫停它,以便進行下一個輸入。我認爲別人可能會工作,但代碼根本沒有任何。當我嘗試添加它時,出現意外的其他標記錯誤。 – 2015-03-31 00:54:38

+0

爲什麼不交換邏輯?檢查左邊是否已經先設置好了?換句話說,顛倒你的支票的順序。找出答案是否錯誤。如果是,左腿?右腿?右臂?左臂?軀幹?頭?如果頭部的答案是錯誤的,請設置頭部。如果頭部的答案爲真,請打開軀幹。如果軀幹的答案是真的,請打開左臂等。 – 2015-03-31 12:11:34