javascript - 创建循环而不是一遍又一遍地复制/粘贴代码

标签 javascript jquery loops

我知道肯定有更好的方法来做到这一点,但我似乎无法弄清楚。我知道我需要创建一个循环,但仅此而已:

function loadData() {
  var getInput1 = localStorage.getItem("input1")
  var parsedInput1 = JSON.parse(getInput1)
  $("#planner-input-1").val(parsedInput1)
  //--------------------------------------

  var getInput2 = localStorage.getItem("input2")
  var parsedInput2 = JSON.parse(getInput2)
  $("#planner-input-2").val(parsedInput2)
  //--------------------------------------

  var getInput3 = localStorage.getItem("input3")
  var parsedInput3 = JSON.parse(getInput3)
  $("#planner-input-3").val(parsedInput3)
  //--------------------------------------

// etc etc etc...

最佳答案

您可以迭代索引(从 1 到任意数量),并将其与 input 连接以在 localStorage 上查找适当的属性:

function loadData(){
  for (let i = 1; i < 10; i++) {
    const parsed = JSON.parse(localStorage.getItem("input" + i));
    $("#planner-input-" + i).val(parsed);
  }
}

但是最好重新构造你的数据和 HTML - 使用本地存储中的数组,并使用类而不是 ID,这样你就可以这样做:

function loadData(){
  const inputs = document.querySelectorAll('.planner-input');
  const parsedArr = JSON.parse(localStorage.getItem("inputs"));
  inputs.forEach((input, i) => {
    input.value = parsedArr[i];
  });
}

使用此方法,本地存储数组中的第一项将对应于要放入第一个 .planner-input 中的值,依此类推。

关于javascript - 创建循环而不是一遍又一遍地复制/粘贴代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59656645/

相关文章:

javascript - 指令中的 ng-click 不调用 Controller 范围中定义的函数

javascript - Firebase 身份验证 : Edit UID

javascript - 使用 javascript,获取给定 x 和 y 位置的 div id

asp.net - JSON 调用 + .net 在内置 Web 服务器上以 Debug模式工作,但不能直接转到虚拟目录

javascript - 使用循环而不是子字符串。数组循环?

javascript - 如何最小化/最大化 jQuery 对话框?

Javascript - 计算对象数组中的重复项并将计数存储为新对象

jquery - asp.net中嵌套菜单的逻辑

loops - 摆脱无用的返回语句

java - 通过将对象的属性/属性与字符串进行比较来检查对象列表是否已存在