【问题标题】:need to append user data to array需要将用户数据附加到数组
【发布时间】:2021-08-25 23:31:18
【问题描述】:

我最初的问题得到了回答,但我意识到,每次我尝试将用户数据推送到数组中时,它都不允许我做任何其他事情来将数据附加到数组,或者推送方法是唯一的方法。还是我应该创建一个新数组.......................... .....................

"use strict"

const names = ["Ben", "Joel", "Judy", "Anne"];
const scores = [88, 98, 77, 88];


const $ = selector => document.querySelector(selector);

const addScore = () => {
  //  get user entries
  const name = $("#name").value;
  const score = parseInt($("#score").value);
  let isValid = true;

  // check entries for validity
  if (name == "") {
    $("#name").nextElementSibling.textContent = "This field is required.";
    isValid = false;
  } else {
    $("#name").nextElementSibling.textContent = "";
  }

  if (isNaN(score) || score < 0 || score > 100) {
    $("#score").nextElementSibling.textContent = "You must enter a valid score.";
    isValid = false;
  } else {
    $("#score").nextElementSibling.textContent = "";
  }

  if (isValid) {
    names.push("#name");
    scores.push("#score");
    names[names.length] = name;
    scores[scores.length] = score;
    $("#name").value = "";
    $("#score").value = "";
  }

  $("#name").focus();



};

// display scores
const displayScores = () => {
  for (let i = 0; i < names.length; i++) {
    document.getElementById("scores_display").textContent += names[i] + " = " +
      scores[i] +
      "\n";
  }
};


document.addEventListener("DOMContentLoaded", () => {
  $("#add").addEventListener("click", addScore);
  $("#display_scores").addEventListener("click", displayScores())
  $("#name").focus();
});
<main>
  <h1>Use a Test Score array</h1>

  <div>
    <label for="name">Name:</label>
    <input type="text" id="name">
    <span></span>
  </div>

  <div>
    <label for="score">Score:</label>
    <input type="text" id="score">
    <span></span>
  </div>

  <div>
    <label>&nbsp;</label>
    <input type="button" id="add" value="Add to Array">
    <input type="button" id="display_scores" value="Display Scores">
  </div>

  <div>
    <textarea id="scores_display"></textarea>
  </div>
</main>

【问题讨论】:

  • 解释“它不允许我”更具体的细节,包括抛出的错误(如果有的话)
  • 我没有收到任何错误,但是每次我尝试使用 push 方法将用户数据添加到数组时都没有任何反应。这是我第一次使用 jquery,我认为这是我的语法,但这似乎不是问题,但我相信推送方法的位置我试图将这些方法放在单独的 if 语句中,但没有任何反应

标签: javascript jquery arrays push


【解决方案1】:

我之前的所有笔记都不正确。你的特设$ const 让我失望了!我很抱歉。

问题是您在更新数组后没有调用 displayScores()。另外,我在该函数中添加了一行,以在遍历数据之前清除现有文本。

"use strict"

const names = ["Ben", "Joel", "Judy", "Anne"];
const scores = [88, 98, 77, 88];


const $ = selector => document.querySelector(selector);

const addScore = () => {
  //  get user entries
  const name = $("#name").value;
  const score = parseInt($("#score").value);
  let isValid = true;

  // check entries for validity
  if (name == "") {
    $("#name").nextElementSibling.textContent = "This field is required.";
    isValid = false;
  } else {
    $("#name").nextElementSibling.textContent = "";
  }

  if (isNaN(score) || score < 0 || score > 100) {
    $("#score").nextElementSibling.textContent = "You must enter a valid score.";
    isValid = false;
  } else {
    $("#score").nextElementSibling.textContent = "";
  }

  if (isValid) {
    names.push("#name");
    scores.push("#score");
    names[names.length] = name;
    scores[scores.length] = score;
    $("#name").value = "";
    $("#score").value = "";
    // add to the textarea
    displayScores()
  }

  $("#name").focus();
};

// display scores
const displayScores = () => {
  document.getElementById("scores_display").textContent = "";
  for (let i = 0; i < names.length; i++) {
    document.getElementById("scores_display").textContent += names[i] + " = " +
      scores[i] +
      "\n";
  }
};


document.addEventListener("DOMContentLoaded", () => {
  $("#add").addEventListener("click", addScore);
  $("#display_scores").addEventListener("click", displayScores())
  $("#name").focus();
});
<main>
  <h1>Use a Test Score array</h1>

  <div>
    <label for="name">Name:</label>
    <input type="text" id="name">
    <span></span>
  </div>

  <div>
    <label for="score">Score:</label>
    <input type="text" id="score">
    <span></span>
  </div>

  <div>
    <label>&nbsp;</label>
    <input type="button" id="add" value="Add to Array">
    <input type="button" id="display_scores" value="Display Scores">
  </div>

  <div>
    <textarea rows="6" id="scores_display"></textarea>
  </div>
</main>

【讨论】:

  • 我试过它仍然没有推送到数组
  • 我正在尝试实现您的代码,但它仍然无法正常工作,您认为这是因为 DOMcontentLoaded 在底部
  • 我觉得现在很好。检查我修改后的答案。干杯
猜你喜欢
  • 2018-07-03
  • 2021-08-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多