2012-09-08 78 views
0

我正在嘗試使用codecademy的指令來構建hang子手遊戲,但我一個人很難過。在下面的guessLetter功能,我添加了以下他們給了我無法使用此功能工作

shown = alterAt(checkLetter,letter,shown);   ///this is mine 

checkLetter = indexOf(letter, checkLetter +1); 

但是,我不能讓測試說明兩行代碼通過。如果你能協助,我會很感激。

// Skip to guessLetter(). You shouldn't need to touch this function. 
function alterAt (n, c, originalString) { 
    return originalString.substr(0,n) + c + originalString.substr(n+1,originalString.length); 
} 

function guessLetter(letter, shown, answer) { 
    var checkLetter = -1; // This variable will hold the indexOf() 

    checkLetter = answer.indexOf(letter); // Single Argument Version starting at 0 
    while (checkLetter >= 0) { 

     // Replace the letter in shown with alterAt() and then store in shown. 
     shown = alterAt(checkLetter,letter,shown);   ///this is mine 
     // Use indexOf() again and store in checkLetter 

     checkLetter = indexOf(letter, checkLetter +1);  ///this is mine 
    } 

    // Return our string, modified or not 
    return shown; 
} 

更新

如果猜測是正確的,它應該如數歸還被猜測修改。例如,如果單詞是樹並且玩家猜測'e',它應該返回'__ee'。這裏有一個小提琴我不能用這個詞就是「不管」的工作:

checkLetter = indexOf(letter, checkLetter +1); 

.indexOf()方法需要調用一個字符串,就像是:http://jsfiddle.net/mjmitche/YAPWm/2/

+0

例html和預期的結果? – Daedalus

+0

如果猜測是正確的,它應該返回由猜測修改的顯示。例如,如果單詞是樹並且玩家猜測'e',它應該返回'__ee'。這裏有一個小提琴,我無法使用單詞「無論」工作http://jsfiddle.net/mjmitche/YAPWm/ – Leahcim

+0

不是_the_問題,但你使用['.substr()'](https:// developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String/substr)不正確:第二個參數應該是長度,而不是結束索引 - 你使用它像['.substring()'] (https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String/substring) - 所以你的第二個'.substr()'操作試圖提取字符串末尾的字符,儘管這實際上不會導致錯誤。你的第二次使用可能是'originalString.substr(n + 1)' - 沒有第二個參數它選擇字符串結束。 – nnnnnn

回答

0

你在這一行有一個錯誤上線前while()。它改成這樣:

checkLetter = answer.indexOf(letter, checkLetter +1); 

工作版本:http://jsfiddle.net/YAPWm/1/