Как заставить этот цикл печатать нужные мне значения? - PullRequest
0 голосов
/ 02 декабря 2018

Я довольно новичок в Javascript, поэтому, пожалуйста, извините за простые ошибки, если я их допустил.Мне нужно сделать страницу доски задач.Пользователь вводит значение (задачу и дату), а JS сохраняет его в объект.Объект помещается в массив и сохраняется в локальном хранилище.После этого он исчезает в заметке (сделал это с помощью изображений и CSS-эффектов) и печатает значение поверх него.Для этого я попытался использовать цикл For, чтобы пройти через массив, когда я получаю его из локального хранилища, но он продолжает печатать только первое значение, введенное пользователем.

Это мой код:

var taskArray = [];
var imgs = document.getElementsByTagName("img");
$(document).ready(function hideImages() {
  $("img").hide();
})

function saveToLocalStorage() {
  //debugger;
  var taskName = document.getElementById("task").value;
  var taskDate = document.getElementById("date").value;

  var task = {
    name: taskName,
    date: taskDate
  }


  taskArray.push(task);
  var arrayToString = JSON.stringify(taskArray);
  localStorage.setItem("user tasks", arrayToString);
  var mainDiv = document.getElementById("maindiv");
  var arrayFromStorage = localStorage.getItem('user tasks');
  arrayFromStorage = JSON.parse(arrayFromStorage);
  for (let index = 0; index < arrayFromStorage.length; index++) {
    mainDiv.innerHTML += `
         <span class="relative">
         <img src="../assets/images/notebg.png" class="fade-in start imgSpacing" alt="">
         <span class="centerOnNote" id="textspan">
         Your task = ${arrayFromStorage[x].name}
         Complete by = ${arrayFromStorage[x].date}
         </span>
         `
    x++
    addText();
  }
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<!DOCTYPE html>
<html lang="en" dir="ltr">

<head>
  <meta charset="utf-8">
  <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">
  <link rel="stylesheet" href="styles.css">
  <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.5.0/css/all.css" integrity="sha384-B4dIYHKNBt8Bc12p+WXckhzcICo0wtJAoU8YZTY5qE0Id1GSseTk6S+L3BlXeVIU" crossorigin="anonymous">
  <title></title>
</head>

<body class="background-image">
  <h1 class="pageheader">My Task Board</h1>
  <form class="" action="index.html" method="post">
    <div class="container">
      <div class="row">
        <input type="text" class="form-control col-sm centerInput" id="task" placeholder="Enter a Task">
        <input type="date" class="form-control col-sm centerInput" id="date" value="">
      </div>
      <div class="form-group">
        <input type="button" class="form-control btn btn-success" id="submit" value="Submit Task" onclick="saveToLocalStorage()">
      </div>
      <div class="form-group">
        <input type="reset" class="form-control btn btn-success " id="reset" value="Reset Form">
      </div>
    </div>
  </form>
  <div class="imgContainer" id="maindiv">
    <script src="https://code.jquery.com/jquery-3.3.1.js"></script>
    <script type="text/javascript" src="scripts.js"></script>
    <!-- load the script at the end of body tag -->
</body>

</html>

Любая помощь будет принята с благодарностью, ура!

1 Ответ

0 голосов
/ 02 декабря 2018

Попробуйте добавить index вместо x в ваш цикл.

for (let index = 0; index < arrayFromStorage.length; index++) {
   mainDiv.innerHTML +=
    `
   <span class="relative">
   <img src="../assets/images/notebg.png" class="fade-in start imgSpacing" alt="">
   <span class="centerOnNote" id="textspan">
   Your task = ${arrayFromStorage[index].name}
   Complete by = ${arrayFromStorage[index].date}
   </span>
   `
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...