Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/469.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 通过单击按钮更新本地存储_Javascript - Fatal编程技术网

Javascript 通过单击按钮更新本地存储

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

我需要在不重新加载页面的情况下更新localstorage中的单个对象项

jsFiddle:

这是我的密码:

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。我只想通过点击按钮来更改列表中的单个元素。好的,谢谢。我将尝试在将来搜索框架。