javascript不会更改localstorage值

时间:2020-07-05 05:13:19

标签: javascript onclick local-storage

const checkedStorage = localStorage.getItem("darkMode");

if (checkedStorage === null) {
    localStorage.setItem("darkMode", false)
}
function darkMode() {
    if (checkedStorage === true) {
        localStorage.setItem("darkMode", false)
    } else {
        localStorage.setItem("darkMode", true)
    }
}

当将该值手动设置为false并按按钮运行darkMode()时,它将更改为true,但是如果将其设置为true,则不会更改为false。当将其设置为null时,它将更改为false,这意味着如果它为true,并且该函数运行了,它将不起作用吗?老实说,我很沮丧。任何帮助都会很棒,谢谢!

2 个答案:

答案 0 :(得分:1)

因为当您使用localStoragelocalStorage.getItem获取数据时,它将返回一个字符串。因此"true" === true为假,这就是为什么未将值设置为false的原因。有关getItem的更多信息,请参考here

请将条件更改为如下所示

function darkMode() {
    if (checkedStorage === "true") {
        localStorage.setItem("darkMode", false)
    } else {
        localStorage.setItem("darkMode", true)
    }
}

希望这会有所帮助。

答案 1 :(得分:0)

您还记得localstorage中的值是一个String而不是布尔值。那是你的问题。此代码将帮助您

const checkedStorage = localStorage.getItem("darkMode");

if (checkedStorage === null) {
    localStorage.setItem("darkMode", false)
}
function darkMode() {

    if (checkedStorage === "true") {
        localStorage.setItem("darkMode", false)
    } else {
        localStorage.setItem("darkMode", true)
    }
   
}

darkMode();

希望对您有所帮助。 Pdta:对不起,我的英语。