Javascript + HTML:按钮未调用函数Onclick

时间:2015-04-23 02:10:42

标签: javascript html function button

我做了一个按钮:

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; } } } 数组中:

GROUP BY

但是,按钮没有调用它,我不知道为什么。

Here is the JSFiddle (Hangman)

3 个答案:

答案 0 :(得分: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;
         }
     }
 }

答案 1 :(得分:1)

这是一个范围问题。 searchLetter函数正在尝试访问您的word变量,但无法找到它,因为它在另一个函数中,而不在此函数的范围内。

解决此问题的一种方法是在全局范围内声明word

答案 2 :(得分:1)

您的代码中存在多个错误。您可以使用浏览器的控制台查看它们(我认为f12会在所有浏览器上打开它)。

您必须在word函数之外声明变量wordSpacespickWord

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

您还应该在单击字母时验证该单词是否已初始化。