javascript - 需要帮助加载带有用户输入的对象数组

标签 javascript arrays object

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

        }

最佳答案

代码中存在某些错误。您正在启动loop0并在AddQuestions()内它会立即增加,并且您的新问题将添加到索引 1 处而不是0 。相反,在添加问题后增加循环变量。

声明for ( i = 0 < question.length; i++;) {是不正确的。应该是for ( i = 0; i < question.length; i++) {

AddQuestions()question 的数组(由于 question 是一个数组,因此将变量 question 重命名为 questions )使用固定 length 创建10 个元素。所以 for 循环 for ( i = 0; i < question.length; i++) {将迭代 empty元素也。相反,您可以使用 - var question = [] 创建一个数组;

而且每次questionbutton 时设置为空数组单击,这将删除之前已插入的项目。相反,在函数外部声明一次数组 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++;
}
<input type="text" id="question">
<input type="text" id="category">
<input type="text" id="ans1">
<input type="text" id="ans2">
<input type="text" id="ans3">
<input type="text" id="ans4">
<button onclick="AddQuestions()">Click</button>

关于javascript - 需要帮助加载带有用户输入的对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57016382/

相关文章:

javascript - 如何指定 Web MIDI channel ?

javascript - 使用 Worklight 和应用于 JSON 响应的 xsl 转换时出现奇怪的错误

javascript - javascript 数组元素是否知道它们的封闭数组?

javascript - 为什么我不能将属性值分配给对象声明中的以下属性?

javascript - 从 React 状态的对象获取数值

javascript - 快速路线和 Controller

java - jsp:如何从 session 中获取值?

被调用的对象 'strn' 不是一个函数

java -++array[s.charAt(i) - 'A'] 究竟是做什么的?

Python,使用列表中的列表,还是列表中的对象?