【问题标题】:Save data forever in JavaScript array from Input Tag将输入标签中的数据永久保存在 JavaScript 数组中
【发布时间】:2019-03-07 07:52:45
【问题描述】:

我有一个来自<input> 的号码,我想将其保存在选定位置的数组中。我用splice() 成功地做到了,但是当页面重新加载时,保存在数组中的数据会重置。我怎样才能“永远”保存这些数据

这是代码:

<label for="number">Number to Save</label>
<input type="text" name="number" id="number" value=""/> 

<input type="button" value="click" onclick="myArr.splice(2, 0, number.value);"/>

【问题讨论】:

  • 你需要使用一些像数据库这样的存储,或者你可以使用 localStorage 检查这个:developer.mozilla.org/en-US/docs/Web/API/Window/localStorage
  • " 保存在数组中的数据会在页面重新上传时重置"...这是因为网页是无状态的。仅在它们被加载到浏览器时才存在。当您重新加载页面时,您将从一个新副本开始,就像以前的副本从未存在一样。如上所述,如果您想在页面重新加载之间保留一些数据,则需要使用一些存储 - 或者像浏览器中的 localStorage 一样,或者如果必须在不同的用户/浏览器/设备之间共享数据,那么像数据库一样的服务器端存储。
  • 但是我不能将数据保存在json中,然后将json转换为数组吗?抱歉我的愚蠢问题,但我不擅长 JS

标签: javascript arrays input local-storage


【解决方案1】:

这里是使用localStoragehttp://jsfiddle.net/7e2o6ptw/的简单示例

    // Retrieve your data from locaStorage
const saveData = JSON.parse(localStorage.getItem("saveData") || null) || {};

// Store your data.
function saveStuff(obj) {
    saveData.obj = obj;

    const myArr = [1,2,3,4,5];
    console.log(myArr);
    saveData.some_array = myArr;

    console.log(saveData.some_array);
    saveData.some_array = myArr.splice(2);

    localStorage.setItem("saveData", JSON.stringify(saveData));
}

// Do something with your data.
function loadStuff() {
    return saveData.obj || "default";
}

if (saveData.some_array) alert("You were here: " + saveData.some_array);

saveStuff("Stuff");

【讨论】:

    【解决方案2】:

    您不能永远存储数据。但是您可以将它们存储在 cookie 中。

    document.cookie = "username=John Doe; expires=Thu, 18 Dec 2013 12:00:00 UTC";
    

    阅读更多关于 JS cookie 的信息:- https://www.w3schools.com/js/js_cookies.asp

    【讨论】:

      猜你喜欢
      • 2016-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多