JavaScript中的for循环和localstorage问题

时间:2018-12-30 06:04:21

标签: javascript local-storage

我有这段代码并且可以正常运行,但是唯一的问题是它并没有像我真正想要的那样为我节省本地存储。循环保留所有键,但最后一个值相同:

"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 :(得分:1)

正如我的评论中所述,您正在使用内部循环的每次迭代覆盖每个键的值(并将它们全部设置为import org.koushik.javabrains.rest.MyDate;数组中的最后一个值)。我认为您正在寻找将datos数组中的每个键设置为与keys数组中相同索引处的项相对应的值。例如:

datos