Javascript 通过单击按钮更新本地存储
我需要在不重新加载页面的情况下更新localstorage中的单个对象项 jsFiddle: 这是我的密码:Javascript 通过单击按钮更新本地存储,javascript,Javascript,我需要在不重新加载页面的情况下更新localstorage中的单个对象项 jsFiddle: 这是我的密码: if (obj.isCompletedTask === false) { newDone.innerHTML = "Not done"; newDone.dataset.done = false; newButton.addEventListener('click', function (e) { newDone.innerHTML = "Don
if (obj.isCompletedTask === false) {
newDone.innerHTML = "Not done";
newDone.dataset.done = false;
newButton.addEventListener('click', function (e) {
newDone.innerHTML = "Done";
newDone.dataset.done = true;
newUl.style.backgroundColor = "red";
e.preventDefault();
})
}
如果我在If语句中使用
If(obj.isCompletedTask==true)
,它什么也不做。为什么?当您使用obj.isCompletedTask===true
时,按钮不执行任何操作isCompletedTask
为false,因此花括号{…}
之间的代码根本不会运行,因此eventListener不会附加到按钮单击事件
如果我正确理解了您的意图,您可能希望将if语句移动到事件侦听器的内部
当您想更新localstorage中的元素时,可以这样做:
localStorage.setItem('list', JSON.stringify(tasks));
…但是当您的任务
对象发生更改时,您需要自己跟踪,并手动更新localStorage。这种关系称为数据绑定。此外,您不能直接更新任务
的子元素,每次任务
中的内容发生更改时,您都必须使用新版本的任务
替换本地存储中的列表
`
一般评论:从我在你的小提琴中看到的情况来看,我确实认为你应该看看一些框架(如vue、react或angular)。跟踪这里和那里的变化真的会让人厌烦,而且,你为什么要重新发明轮子?我相信你不是指
window.localStorage
。您的代码没有以任何方式引用localstorage。另外,obj.isCompletedTask和obj.isCompletedTask是同一件事吗?请尽量解释清楚。是的,我的意思是完成任务。对不起,弄错了。此时,当我点击按钮时,完整的列表显示为“未完成”语句和false。我想用newButton将false改为true。你的问题很不清楚,你想做什么,是什么触发了上面的代码,到底是什么不起作用?您在哪里尝试更新本地存储?我不知道这是如何升级的。@JohnBra我已经编辑了你的帖子,修复了这个ìsCompletedTask`但仍然完全不清楚你想要实现什么,你的问题到底是什么。我不知道如何在本地存储中更新isCompletedTask。此时,当我向列表中添加某些内容时,它在localstorage中显示为false。我只想通过点击按钮来更改列表中的单个元素。好的,谢谢。我将尝试在将来搜索框架。