2015-04-23 85 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/

还应验证,当你点击一个字母词已被初始化。