我有两个数组。
var fruits = [];
var tasks = [];
当我在文本字段中输入一个值时,它会触发一个将值推送到数组的函数。然后它会触发一个单独的函数,该函数对数组进行字符串化并将其保存在本地存储中。 (“when”是document.addeventlistener的别名)。
when(toDo, "keypress", function(event){
if (event.key == "Enter" || event.keyCode == 13) {
pushArray();
stringifyArray(fruits);
toDo.value = "";
}
});
// function that adds new task to the array
function pushArray(){
var newtask = new Task(toDo.value, "No note yet");
fruits.push(newtask);
}
// function that stringifies given array and stores it in local storage
function stringifyArray(array){
var makeString = JSON.stringify(array);
var setItem = localStorage.setItem("tasks", makeString);
}
当我遍历第一个数组并尝试在div中显示object.Name和.Note时,它可以正常工作:
when(button, "click", function(event){
demolist.innerHTML = "";
for(i=0; i< fruits.length; i++){
demolist.innerHTML += fruits[i].Name + " " + fruits[i].Note + "<br>";
}
});
但是当我触发一个解析该数组的函数时,填充第二个并尝试以相同的方式遍历它,我得到“undefined undefined”,即使我可以看到数组包含我检查时提交的所有对象控制台。
function parseArray(){
var getArray = localStorage.getItem("tasks");
var parseObj = JSON.parse(getArray);
tasks.push(parseObj);
}
when(button2, "click", function(event){
function parseArray()
demolist2.innerHTML = "";
for(i=0; i< tasks.length; i++){
demolist2.innerHTML += tasks[i].Name + " " + tasks[i].Note + "<br>";
}
});
https://jsfiddle.net/bjxs3LdL/ (没有精彩的解决方案请)
我是编码和stackoverflow的新手,请原谅长篇文章。
答案 0 :(得分:1)
通过更改
修复您的parseArray()
功能
tasks.push(parseObj);
到
tasks = parseObj;
编辑:对于所有的编辑很抱歉,很难将我的控制流包裹起来。要解决第一个备忘录未保存的问题,请在stringifyArray(fruits);
功能的末尾添加submitNote()
来电。
答案 1 :(得分:0)
parseArray
来电是错误的,请尝试重新审核button2
听众:
when(button2, "click", function(event){
parseArray();
demolist2.innerHTML = "";
for(i=0; i< tasks.length; i++){
demolist2.innerHTML += tasks[i].Name + " " + tasks[i].Note + "<br>";
}
});
否则,您的代码需要重新设计,但这又是另一个机会。