javascript - 未捕获的类型错误未定义不是函数

标签 javascript function undefined

我已经调试了很多代码,但仍然遇到问题。这是一项类作业,我问了我的教授,他也很惊讶。我确信修复此错误将有助于我的代码,但我不确定我错了什么。你能帮忙吗?这是错误

enter image description here

这是我的 html 代码

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>Magic Word - Sample</title>
    <script src="magicWord.js"></script>
</head>
<body>
    <div>
        <h2 align="center">WELCOME TO MAGIC WORD!</h2>
        <h3>Please enter your guess on the space below:</h3>
        <div>
            <input type="text" id="guestGuess" />
            <input type="submit" id="submitButton" onclick="javascript:enteredGuess();" />
        </div>
    </div>
    <div>
        <h3>Your guesses so far are: </h3>
        <div id="userGuesses"></div>
        <div>You have guessed: <span id="userAttempts"></span> times</div>
    </div>
</body>
</html>

这是我的 JavaScript

var numOfAttempts = 5;
var numOfGuesses = 0;
var magicWord = "Just";

function guessesUsed(attemptsTaken) {
    var numGuessesLeft = document.getElementById("userAttempts");
    numGuessesLeft.innerHTML = attemptsTaken;
}

//function guessesLeft(attemptsLeft) {
//  var numGuessesUsed = document.getElementById("guessesLeft");
//  numGuessesUsed.innerHTML = attemptsLeft;    
//}

function listWordsUsed(wordUsed) {
    var userTrials = document.getElementbyId("userGuesses").innerText;
    var divisor = document.createElement("div");
    divisor.innerHTML = "<div id=" + wordUsed + ">" + wordUsed + "</div>";
    userTrials.appendChild(divisor);
    return;
}

function enteredGuess() 
{
    //A user will enter a word and the word will be checked against the magic word
    //var enterGuess = prompt("What is your guess?", "Enter your guess here");
    var theGuess = document.getElementById("guestGuess");
    var magicWordResult;

    // Used lower case for both instances to compare both words
    if (theGuess.value.toLowerCase() == magicWord.toLowerCase()) 
    {
        //The user guesses the correct word
        magicWordResult = "Your guess was" + theGuess + "! Nice going!";
        //document.writeln("Your guess was: " + guestGuess + "\nand the magic word is " + magicWord);
    }
    else  //The user guesses wrong
    {
        //When user gets it wrong increase by one the numOfGuesses
        numOfGuesses ++;
        magicWordResult = "Your guess was" + theGuess + ". Nice try, but that's wrong, try again. \nYou have used " + numOfGuesses + " guesses.";

        // Subtract the amount of guesses from the amount of attempts
        var guessesLeft = numOfAttempts - numOfGuesses;

        if (numOfGuesses == numOfAttempts)
        {
            // When the user has reached all its attemps
            magicWordResult = "Sorry, you ran out of guesses. The magic word was " + magicWord + ".";
        }
        else
        {
            magicWordResult = "You still have " + guessesLeft + " guesses left.";
        }

        //To show the number of guesses the user has used
        guessesUsed(numOfGuesses);

        //To show the number of guesses the user has left
        //guessesLeft(guessesLeft);

        //Creates a list of the words used by the user
        listWordsUsed(theGuess);

    }

    // Display in an alert mode and show how the user is doing
    alert(magicWordResult);
}

我的错误在哪里?

最佳答案

这个:

var userTrials = document.getElementbyId("userGuesses").innerText;

获取“userGuesses”元素的文本作为字符串,但这里:

userTrials.appendChild(divisor);

您的代码将其视为 DOM 节点。因为 String 实例上没有“appendChild”属性,所以它是未定义,这解释了错误 - 您尝试进行函数调用,但函数引用是未定义相反。

编辑 - 哦,“getElementById()”中的拼写错误也很重要,正如 crclayton 在评论中指出的那样。我错过了那个:)处理这个问题的一般技巧

undefined is not a function

错误是尝试找到一个地方,您的代码可能会出现未定义而不是对函数的引用。根据我的经验,主要原因是:

  • 拼写错误,例如“getElementbyId”之类的内容。如果函数名称拼写错误,JavaScript 将无法理解,因此无法给出更好的错误。
  • 对变量或属性所指代的内容不满足假设,例如 userTrials 变量。
  • 假设某个函数返回对函数的引用,而实际上它(可能)返回未定义

关于javascript - 未捕获的类型错误未定义不是函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25343104/

相关文章:

javascript - Redux - Hooks : Using React Hooks with Redux Hooks, 创建无限循环或根本不创建任何内容

javascript - Fabricjs svg解析错误

javascript - 将 function.call 分配给变量

sql - 如何在 oracle sql 脚本中创建过程并在脚本中使用它?

javascript - 无法访问 Javascript 数组中的变量。 Console.log 说未定义

javascript - 触发浏览器事件进行测试

javascript - Highchart如何从xaxis底线向上做动画

JavaScript onchange 函数未定义?

java - 如何从Java程序调用Oracle函数

ruby-on-rails - 未定义的方法 `each' 为零 :NilClass. .. 为什么?