你是
localStorage.setItem('note_'+note.length, note);
note.length 是输入表单长度,不是唯一变量,也不是顺序的。
在开发者工具的console.log 中输入localStorage 以查看localStorage 中的内容。
并尝试删除
localStorage.removeItem(note); // note is an object object not a key.
note 不是 'note_'+note.length 的关键。
每次两个音符的长度相同时,最后一个音符会删除/替换第一个音符,并且您没有键列表来引用要删除的音符。我建议通过每次创建笔记时计数并使用计数作为键来设置或创建键索引。
localStorage.count
然后你可以添加到
if (localStorage.count) {
localStorage.count = localStorage.count+1
} else {
localstorage.count = 1; // no notes begin at 1.
}
localStorage.setItem('note_'+localStorage.count, note);
并删除最后一个音符
if (localStorage.count) {
localStorage.removeItem('note_'+localStorage.count);
localStorage.count = localStorage.count-1
} else {
// no notes localStorage count is zero or undefined? same difference here.
}
您还需要更新显示循环,因为它将所有 localStorage 显示为注释。
或者你可以使用 localStorage.length,
localStorage.setItem('note_'+localStorage.length, note);
和
localStorage.removeItem('note_'+localStorage.length);
但是,如果在 localStorage 中放置了除笔记以外的任何内容,则假设的逻辑会破坏 deleteNote(localStorage.length)
无论哪种方式,您都可以在笔记的右上角放置一个 X 来调用 deleteNote(key),但仍需要更新显示循环。
因此。
function deleteNote(note) {
localStorage.removeItem(note);
}
从 X 调用:
deleteNote(key);