2015-04-23 37 views
2

我已經做了按鈕:JavaScript和HTML:按鈕不可主叫功能的onclick

<input type="button" value="a" onclick="searchLetter(this)"></input> 

單擊時,它應該在其檢查,如果字母是word一個函數調用,如果它是,將其添加到spaces數組中對應點:

function searchLetter(obj) 
    { 
     var letter = obj.value; 
     obj.disable; 
     for (i = 0; i <= word.length; i++){ 
      if (word[i] == letter) { 
       wordSpaces[i] = letter; 
       document.getElementById('spaces').innerHTML = wordSpaces.join(''); 
       break; 
      } 
     } 
    } 

但是,按鈕不調用它,我不知道爲什麼。

Here is the JSFiddle (Hangman)

+1

檢查您的控制檯..''''' undefined –

回答

2
function pickWord() { 
    var word = dictionary[Math.floor(Math.random() * dictionary.length)]; 
    var wordSpaces = []; 
    for (var i = word.length - 1; i >= 0; i--) 
    wordSpaces.push("_ "); 
    document.getElementById('spaces').innerHTML = wordSpaces.join(''); 

} 

在你的代碼,wordwordSpaces是一個局部變量來該功能。

function searchLetter(obj) { 
    var letter = obj.value; 
    for (var i = 0; i <= word.length; i++) { 

你想指的word變量。這就是爲什麼它沒有進入循環

所以它必須是這樣的:

var word, wordSpaces; 
function pickWord() { 
    word = dictionary[Math.floor(Math.random() * dictionary.length)]; 
    wordSpaces = []; 
    for (var i = word.length - 1; i >= 0; i--) 
    wordSpaces.push("_ "); 
    document.getElementById('spaces').innerHTML = wordSpaces.join(''); 

} 
function searchLetter(obj) { 
    var letter = obj.value; 
    for (var i = 0; i <= word.length; i++) { 
     if (word[i] == letter) { 
      wordSpaces[i] = letter; 
      document.getElementById('spaces').innerHTML = wordSpaces.join(''); 
      break; 
     } 
    } 
} 
+0

好的,這是合理的謝謝! (必須等待7分鐘才能選擇並回答) – JoshK

+0

演示:https://jsfiddle.net/mohamedrias/w1qqp6qw/3/ – mohamedrias

+0

感謝您的幫助! – JoshK

1

這是一個範圍的問題。 searchLetter函數試圖訪問您的word變量,但找不到它,因爲它在另一個函數中,而不在此函數的範圍內。

解決此問題的一種方法是在全局範圍內聲明word

1

你的代碼有幾個錯誤。您可以使用瀏覽器的控制檯來查看它們(我認爲,f12會在所有瀏覽器上打開它)。

您必須聲明變量wordwordSpaces以外的pickWord函數。

https://jsfiddle.net/gael/3vdwLasc/3/

還應驗證,當你點擊一個字母詞已被初始化。