localStorage,我似乎无法调用数据

时间:2017-12-21 19:43:02

标签: javascript

var dataArray = [];
localStorage.itemListRecord = JSON.stringify(dataArray);
dataArray = JSON.parse(localStorage.itemListRecord);

var dataObj = {
    listItem: textInput,
};
dataArray.push(dataObj);

我正在尝试将数据保存在我的待办事项列表中,我将这些项目推送到一个对象中,我可以" stringify"并且"解析" ... 但我不确定如何调用保存的数据..

看起来这些物品根本不能进入localStorage ..

https://jsfiddle.net/headbangz/kn0bw6yw/

3 个答案:

答案 0 :(得分:2)

我注意到脚本启动时,您会立即清除正在使用的localStorage.itemListRecord位置,然后再尝试从中读取它。因此,初始化时它将始终为空,并且此脚本永远不能使用那里的内容:

// Data Object
var dataArray = [];
// CHANGED: I commented out the line below so that the localstorage is not cleared
// localStorage.itemListRecord = JSON.stringify(dataArray);
dataArray = JSON.parse(localStorage.itemListRecord);

// CHANGED: added these lines only for debugging
console.log('existing data');
console.log(dataArray);

此外,我注意到当添加新的待办事项列表项时,还没有任何代码会添加到本地存储:

function listTodoItem(textInput) {

    var dataObj = {
        listItem: textInput,
    };
    dataArray.push(dataObj);

    // CHANGED: added this line to update localstorage whenever an items is added to the list
    localStorage.itemListRecord = JSON.stringify(dataArray);

      // CHANGED: added these lines only for debugging
    console.log(dataArray);
    console.log(dataObj);

请注意,即使进行了这些更改,列表仍然不能反映本地存储中的内容,因为它不会根据dataArray中的内容构建初始无序列表。还需要添加更多代码。

但是根据我在这里建议的内容,当你重新运行jsfiddle时查看控制台日志中的输出,你应该能够看到localstorage部分正在运行,你可以通过这个位。

答案 1 :(得分:2)

此示例应该有效。

var textInput = "example";
var dataObj = {
    listItem: textInput,
};
var dataArray = [];

dataArray.push(dataObj);    
localStorage.setItem("itemListRecord", JSON.stringify(dataArray));

dataArray = JSON.parse(localStorage.getItem("itemListRecord"));    
dataArray.push(dataObj);
localStorage.setItem("itemListRecord", JSON.stringify(dataArray));

答案 2 :(得分:0)

我还没有看到API

我使用Mozilla网站https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage

上列出的内容

example tied to your click handler

似乎可以getset好吗

检查console日志

下面的评论 - 确切的点击处理程序已更改

// Add value from the input field
document.getElementById("new-btn").addEventListener('click', function() {
    var itemValue = document.getElementById("my-input").value;
    if (itemValue) {
        listTodoItem(itemValue);
        localStorage.setItem('data', JSON.stringify(itemValue));
        console.log(localStorage.getItem('data'));
    }
});