【发布时间】: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