需要帮助来加载用户输入的对象数组

时间:2019-07-13 05:18:34

标签: javascript arrays object

我正在尝试运行一个小程序,该程序根据用户在输入文本框中键入的内容将问题加载到对象数组上。这就是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);
}

        }

2 个答案:

答案 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函数的末尾