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

Javascript + HTML: Button Not Calling on Function 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)

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;
         }
     }
 }

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

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

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

您必须在 pickWord 函数外声明变量 wordwordSpaces

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

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