弹出窗口保存在本地存储中

时间:2015-12-31 12:04:09

标签: javascript jquery local-storage

我仍尝试为便签制作本地存储空间。我想在打开粘贴之前自动查看(打开)所有页面将被刷新这么久,直到他们将被ESC关闭。关闭ESC工作,但本地存储不能保存粘性......

https://jsfiddle.net/venntr/14fs0fef/3/

SELECT T1.ID,T1.BANKACCOUNT,T2.BANK 
FROM TABLE1 T1 INNER JOIN TABLE2 T2
ON T1.ID=T2.EMPID
WHERE T1.ID NOT IN
(
    SELECT T1.ID FROM TABLE1 T1 INNER JOIN TABLE2 T2
    ON T1.ID=T2.EMPID
    WHERE T1.BANKACCOUNT=T2.BANK
)

1 个答案:

答案 0 :(得分:0)

您的解决方案存在一些问题。首先,用于保存注释的单击事件不起作用,因为选择器发出错误,因为它在首次加载时无法在页面上找到“保存”ID(因为尚未创建粘滞便笺) 。由于您已经在使用jQuery,因此您应该将它用于所有选择器,因为它没有此问题。

$(document).on("click", 'button.savebutton', function ()
{
    var note = document.getElementById("note").value ;
    localStorage.setItem("note", note) ;
    alert("note id saved") ;
});

其次,当您使用jQuery设置textarea的值时,您需要使用'val'方法:

$("textarea#note").val(note);

然而,这仍然无法让你到达你想要的地方,就像页面加载时一样,没有粘滞便笺可以加载你的值(除非你有更多的代码没有显示)。您需要循环从本地存储返回的值,并从中动态创建便签。类似的东西:

for (var i = 0; i < notes.length;i++) {
        addNote(notes[i]);
}

其中addNote应该是您在“Add Sticky Note”按钮点击事件中创建新便笺的功能。

编辑:

还有一个问题,您的解决方案只允许保存一个便签,因为保存点击事件正在写入您已经放入localstorage的任何其他内容。您需要为本地存储中的每个粘性具有唯一的名称(即“note1”,“note2”),或者更好的解决方案可能是在页面上具有主保存按钮以保存所有粘性。然后你可以遍历它们并将它们全部保存为localstorage中的JSON数组:

localStorage.setItem('notes', JSON.stringify(noteArray));

您可以完全放弃保存按钮并在使用退出页面时保存所有内容:

$(window).on('beforeunload', function() {
       //loop over notes and put in array
       //stick json array in localstorage
});
相关问题