单击按钮更新localstorage

时间:2017-12-01 10:49:12

标签: javascript

我需要更新localstorage中的单个对象项而不重新加载页面。

jsFiddle:https://jsfiddle.net/7xsg8679/

这是我的代码:

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) - 它什么都不做。为什么呢?

1 个答案:

答案 0 :(得分:1)

使用obj.isCompletedTask === true按钮时,isCompletedTask不执行任何操作,因此大括号{ ... }之间的代码根本不会运行,因此eventListener不会附加到按钮上点击事件。

如果我理解你的意图,你可能想将if语句移到事件监听器内部。

如果要更新localstorage中的元素,可以这样做:

localStorage.setItem('list', JSON.stringify(tasks));

...但是当您的tasks对象发生变化时,您需要自己跟踪,并手动更新localStorage。这种关系称为数据绑定。此外,您不能直接更新tasks的子元素,每当list中的某些内容发生更改时,您必须使用新版tasks替换localStorage中的tasks

一般评论:从我在你的小提琴中看到的,我真的认为你应该看看一些框架(如vue,react或angular)。跟踪这里的变化会在一段时间后真的很烦人,而且,为什么要重新发明轮子?