当前位置: 首页 > 知识库问答 >
问题:

增加localStorage对象名称以存储来自输入的数据

盖锐
2023-03-14

这仅用于测试目的。

我正在尝试存储来自3个输入(类型:text、number)的数据,并将它们存储在localstorage中。每次提交都会连续递增。

我似乎在第二次提交时覆盖value0、value1、value2,而不是进一步增加到value3、value4、value5。

预期结果:

  1. 首先提交value0、value1、value2
  2. 第二次提交value3、value4、value5
  3. 第三次提交value6、value7、value8等

JS:

document.getElementById('btn').addEventListener('click', createEntry());

function createEntry(){
    const inputs = document.getElementsByTagName("input");

    let i;
    for (i = 0; i < inputs.length; i++) {
        let value = inputs[i].value; 

        localStorage.setItem(`value${i}`, JSON.stringify(value));

    }  
};

通过抓取所有输入标记来收集所有输入,循环找到的元素。将new语句赋给循环值并将其存储在localstorage中。增加项名以避免覆盖以前循环的项。

HTML:

<div class="form">
      <input type="text" required>
      <input type="text" required>
      <input type="number" min="1" max="120" required>
      <button type="button" id="btn">Add</button>
</div>

共有1个答案

邴和雅
2023-03-14

您的编码方式将覆盖保存的值,因为i在函数运行时总是被重置为0。有许多不同的方法可以重写代码,下面是一种:

存储上次使用的索引

// By the way, there was an error in this line, you were calling createEntry()
// instead of passing the function as a callback.
document.getElementById('btn').addEventListener('click', createEntry);

function createEntry() {
    const inputs = document.getElementsByTagName("input");

    let i;
    let index = getNextIndex();

    for (i = 0; i < inputs.length; i++) {
        let value = inputs[i].value; 
        localStorage.setItem(`value${index}`, JSON.stringify(value));
        index++;
    }

    localStorage.setItem('nextIndex', index);
}

function getNextIndex() {
    const index = localStorage.getItem('nextIndex');
    return index ? parseInt(index) : 0;
}
 类似资料:
  • 本文向大家介绍JS localStorage存储对象,sessionStorage存储数组对象操作示例,包括了JS localStorage存储对象,sessionStorage存储数组对象操作示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JS localStorage存储对象,sessionStorage存储数组对象操作。分享给大家供大家参考,具体如下: 一、前言 最近在用angu

  • 问题内容: 我想在HTML5中存储一个JavaScript对象,但是我的对象显然正在转换为字符串。 我可以使用来存储和检索原始JavaScript类型和数组,但是对象似乎无法正常工作。应该吗 这是我的代码: 控制台输出为 在我看来,该方法是在存储输入之前将输入转换为字符串。 我在Safari,Chrome和Firefox中看到了这种行为,因此我认为这是我对HTML5Web存储规范的误解,而不是浏览

  • 问题内容: 我想在HTML5中存储一个JavaScript对象,但是我的对象显然正在转换为字符串。 我可以使用来存储和检索原始JavaScript类型和数组,但是对象似乎无法正常工作。应该吗 这是我的代码: 控制台输出为 在我看来,该方法是在存储输入之前将输入转换为字符串。 我在Safari,Chrome和Firefox中看到了这种行为,因此我认为这是我对[HTML5 问题答案: 再次查看Appl

  • 问题内容: 我正在尝试像这样使用AngularJS和UI Bootstrap 设置: .html .js 目前,我已经能够使用所选名称更新模型,但是我的目标是通过传递整个对象。有一种干净的方法可以仅使用输入来执行此操作吗? 问题答案: 当然可以:-) 从预输入指令http://angular-ui.github.io/bootstrap/使用作为AngularJS相同的超灵活的语法选择指令进行。所

  • 我正在制作一个基本的电影出租模拟器应用程序,我目前有一个问题,存储输入从我的文本字段和我的组合框到变量。我设法将大多数变量转换为字符串,但是当我试图打印输出以测试它时,它总是返回“null”。 我需要弄清楚如何从组合框中获取用户所做的选择并将其存储为字符串,我还需要弄清楚如何正确存储方法的结果。我以前从来没有遇到过这个问题,所以我真的不知道如何解决它。我的代码如下: 配子类型:

  • 本文向大家介绍JavaScript使用localStorage存储数据,包括了JavaScript使用localStorage存储数据的使用技巧和注意事项,需要的朋友参考一下 1 概述 JavaScript提供2个方法在浏览器端储存数据:sessionStorage 和 localStorage。 sessionStorage:保存的数据用于浏览器的一次会话,当会话结束(通常是该窗口关闭),数据被