【问题标题】:JavaScript error executing a function: 2 arguments required but only 1 present执行函数的 JavaScript 错误:需要 2 个参数,但只有 1 个存在
【发布时间】:2021-09-24 14:11:37
【问题描述】:

我正在创建一个点击式游戏来帮助我学习 JavaScript。

概念是,生成一个随机坐标,对应于棋盘上的一个正方形,用户必须单击该正方形。当他们单击正方形时,我希望将该正方形的 id 存储为变量,以便可以将其与随机生成的坐标进行比较,以查看他们是否单击了正确的正方形。

问题是,当我选择一个正方形时,我收到一条错误消息: “未捕获的类型错误:无法对‘文档’执行‘评估’:需要 2 个参数,但只有 1 个存在。”

这是一个 HTML sn-p:

<body>
    <div id="generator">
        <button onclick="ranCoord();">Start Chess Vision Trainer</button>
    </div>
    <div class="chessBoard">
        <div class="float-right">
            <div class="float-left rank"><p>8</p></div>
            <div id="a8" onclick="evaluate(this.id);" class="lightSquare"></div>
            <div id="b8" onclick="evaluate(this.id);" class="darkSquare"></div>
            <div id="c8" onclick="evaluate(this.id);" class="lightSquare"></div>
            <div id="d8" onclick="evaluate(this.id);" class="darkSquare"></div>
            <div id="e8" onclick="evaluate(this.id);" class="lightSquare"></div>
            <div id="f8" onclick="evaluate(this.id);" class="darkSquare"></div>
            <div id="g8" onclick="evaluate(this.id);" class="lightSquare"></div>
            <div id="h8" onclick="evaluate(this.id);" class="darkSquare"></div>
        </div> 

这是 JS 代码:

// to generate random alphanumeric character from a-h
var file = new Array()
    file[0] = "a";
    file[1] = "b";
    file[2] = "c";
    file[3] = "d";
    file[4] = "e";
    file[5] = "f";
    file[6] = "g";
    file[7] = "h";

var rank = Math.floor(Math.random()* (8)) + 1; //random num between min (inclusive) and max (exclusive)
var letter = Math.floor(Math.random()*8);
var ranNum = file[letter] + rank; //generates random coordinate i.e. a8, b5, d1 etc.

//to display random coordinate in a div container so user can see 
function ranCoord() {
    document.getElementById("generator").innerHTML = ranNum;
}

//to compare if clicked square matches the randomly generated square
function evaluate(answer){

    if(answer == ranNum) {
         alert("correct");
     }
     else {
         alert("incorrect");
     }
}

我不明白为什么它说需要两个参数,因为我在 evaluate 函数中只包含了一个参数。

我想自己构建这个项目,所以我不希望任何人回复整个编码解决方案来实现我的项目目标。我只是想知道为什么我会收到这个错误。

提前致谢!

【问题讨论】:

  • 您的随机数生成是在任何函数之外编写的。因此,在第一次评估脚本时,只会生成一个随机数。
  • 我不确定我理解你的意思。为什么要写在函数里面?我需要在多个函数中使用数字生成器变量,所以它必须在任何函数之外声明,对吧?我上个月左右才开始学习 JavaScript,如果这个问题有明显的答案,请见谅。

标签: javascript html


【解决方案1】:

evaluatedocument object of the DOM 的一种方法,因此属于保留关键字(您不能在代码中使用的字词,因为它们已经是本机 JavaScript 或 DOM 的一部分)。

尝试重命名你的函数checkIfCorrect

【讨论】:

  • 现在就像一个魅力!感谢您的评论,我不知道 evaluate 是保留关键字。
猜你喜欢
  • 2015-07-03
  • 1970-01-01
  • 2012-03-04
  • 2016-12-11
  • 1970-01-01
  • 1970-01-01
  • 2014-09-04
  • 2012-03-07
  • 1970-01-01
相关资源
最近更新 更多