我会尝试只发布我的程序的重要部分。如果需要更多代码,请告诉我。
main.html
<html>
<head>
<title>Mathematician</title>
<meta charset=UTF8 />
</head>
<body>
<span id=player_information>
</span>
<hr />
<span id=exercises>
</span>
</body>
<script src="script.js"></script>
</html>
script.js(压缩版)
class Exercises
{
constructor(player, number_of_exercises)
{
this.player = player;
this.exercises = [];
for (var i = 0; i < number_of_exercises; i++)
{
var exercise = new Exercise();
var exercise_display = document.createTextNode(exercise);
var input_field = document.createElement("input");
var list_element = [exercise, exercise_display, input_field];
this.exercises.push(list_element);
}
}
display()
{
var exercises_area = document.getElementById("exercises");
for (var i = 0; i < this.exercises.length; i++)
{
exercises_area.append(this.exercises[i][1]);
exercises_area.append(this.exercises[i][2]);
exercises_area.append(document.createElement("br"));
}
var check_button = document.createElement("button");
check_button.innerHTML = "Check";
check_button.onclick = this.check_exercises;
exercises_area.append(check_button);
}
check_exercises()
{
for (var i = 0; i < this.exercises.length; i++)
{
if (this.exercises[i][0].check_guess(this.exercises[i][2].value)) {
alert("That was wright!");
}
}
}
}
...
var player = new Player();
player.display();
var exercises = new Exercises(player, 10);
exercises.display();
该程序生成练习并显示它们,其中包含文本和输入字段,您可以在其中输入解决方案。如果我单击检查按钮,我会收到以下错误消息:
TypeError: this.exercises is undefined
我的赌注是什么?我试图弄清楚,但这个错误消息对我来说没有意义。
最佳答案
在构造函数中,您希望将 this
绑定(bind)到您的 display 和 check_exercises 函数。
尝试:
constructor(player, number_of_exercises)
{
...code...
this.check_exercises = this.check_exercises.bind(this)
this.display = this.display.bind(this)
}
“right”的拼写也没有“w”;)
关于Javascript - 对象字段未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51670917/