我正在尝试运行一个小程序,该程序根据用户在输入文本框中键入的内容将问题加载到对象数组上。这就是HTML的外观。 https://i.imgur.com/BD1oQtF.png
到目前为止,我已经做到了。我希望每次单击“添加问题”按钮时都重复该循环(该按钮执行“ AddQuestion”功能),因此我添加了“循环”变量,并添加了for循环以向我显示问题的标题。但这似乎不起作用...
class questions {
constructor(question, cat, ans1, ans2, ans3, ans4) {
this.question = question;
this.cat = cat;
this.ans = ans1;
this.ans2 = ans2;
this.ans3 = ans3;
this.ans4 = ans4;
}
}
loop = 0
function AddQuestions()
{
loop++;
var question = new Array(10);
title = document.getElementById("question").value;
category = document.getElementById("category").value;
answ1 = document.getElementById("ans1").value;
answ2 = document.getElementById("ans2").value;
answ3 = document.getElementById("ans3").value;
answ4 = document.getElementById("ans4").value;
question[loop] = new questions (title, category, ans1, ans2,
ans3, ans4);
console.log(question[loop].question);
for ( i = 0 < question.length; i++;) {
console.log(question[i].question);
}
}
答案 0 :(得分:1)
代码中存在某些错误。您正在使用loop
来启动0
,并且在AddQuestions()
内它会立即递增,并且新问题将添加到索引1
而不是0
处。而是在添加问题后增加循环变量。
语句for ( i = 0 < question.length; i++;) {
不正确。应该是for ( i = 0; i < question.length; i++) {
在AddQuestions()
中,question
的数组(由于question
是一个数组,因此将变量question
重命名为questions
)是用固定的{{1 }}(共10个元素)。因此for循环length
也会迭代for ( i = 0; i < question.length; i++) {
元素。相反,您可以使用-empty
;
此外,每次在单击var question = []
时将question
设置为空数组,这将更早删除已插入的项目。而是在函数button
外部声明数组。
AddQuestions
class questions {
constructor(question, cat, ans1, ans2, ans3, ans4) {
this.question = question;
this.cat = cat;
this.ans = ans1;
this.ans2 = ans2;
this.ans3 = ans3;
this.ans4 = ans4;
}
}
let loop = 0;
const question = [];
function AddQuestions() {
title = document.getElementById("question").value;
category = document.getElementById("category").value;
answ1 = document.getElementById("ans1").value;
answ2 = document.getElementById("ans2").value;
answ3 = document.getElementById("ans3").value;
answ4 = document.getElementById("ans4").value;
question[loop] = new questions(title, category, answ1, answ2, answ3, answ4);
for (i = 0; i < question.length; i++) {
console.log(question[i].question);
}
loop++;
}
答案 1 :(得分:0)
您的for循环从0开始,但问题数组索引从1开始。您需要将loop++;
命令移至AddQuestions
函数的末尾