Проблема с для цикла и локального хранилища в JavaScript - PullRequest
0 голосов
/ 30 декабря 2018

У меня есть этот код, и он функционален, но единственная проблема состоит в том, что он не спасает меня, как я действительно хочу.Цикл хранит все ключи, но с тем же последним значением:

"use strict";

var form = document.querySelector("#form");

form.addEventListener("submit", function() {
  var name = document.querySelector("#name").value;
  var year = document.querySelector("#year").value;
  var productor = document.querySelector("#productor").value;
  var director = document.querySelector("#director").value;

  if (name === "" || year == "" || productor == "" || director == "") {
  } else {
    let body = document.querySelector("tbody");
    var tr = document.createElement("tr");
    body.appendChild(tr);

    var datos = [name, year, productor, director];
    var keys = ["name", "year", "productor", "director"];
    for (var k in keys) {
      for (var d in datos) {
        localStorage.setItem(keys[k], datos[d]);
      }
    }


    for (let d in datos) {
      var td = document.createElement("td");
      tr.appendChild(td);
      var text = document.createTextNode(datos[d]);
      td.appendChild(text);
    }
  }
});

var clear = document.querySelector("#clear");

проблема, я полагаю, прямо здесь:

for (var k in keys) {
      for (var d in datos) {
        localStorage.setItem(keys[k], datos[d]);
      }
    }

1 Ответ

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

Как отмечено в моем комментарии, вы перезаписываете значение каждого ключа на каждой итерации вашего внутреннего цикла (и устанавливаете их все на последнее значение в вашем массиве datos).Я думаю, что вы хотите установить для каждого ключа в вашем массиве keys значение, соответствующее элементу с тем же индексом в вашем массиве datos.Например:

const datos = ['Working Title', '2018', 'Patty Producer', 'Danny  Director'];
const keys = ['name', 'year', 'productor', 'director'];

keys.forEach((k, i) => {
  localStorage.setItem(k, datos[i]);
});

console.log(localStorage.getItem('name')); // Working Title
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...