将 localStorage 键与任何元素 id 进行比较,如果等于则将 class 添加到元素

Compare localStorage keys with any element id and add class to element if equals

我正在尝试为图片库构建书签/收藏夹功能,以便用户可以将某些图片标记为收藏夹(保存到 localStorage)。

所以,目前我通过 onClick="addFavorites(this)" 在每个元素上调用一个函数,函数是

function addFavorites(element) {
    var bild = element.id;
    if (localStorage.getItem(bild) === null) {
        localStorage.setItem(bild, bild);
    } else {
        localStorage.removeItem(bild);
    }
}

到目前为止一切正常。现在我想让所选的图片也被视觉标记(尤其是在页面重新加载时),我正在努力寻找解决方案。是否有可能将 localStorage 键与任何元素 id 进行比较并添加 class f.e。 favorite 等于元素。

也许还有更简单的方法来解决这个问题?

任何帮助或想法都会很棒!

假设您的照片都有一个标识 class,例如 "picture"。然后你可以在页面加载时有这样的东西 运行:

var pictures = document.querySelectorAll(".picture");
pictures.forEach(picture => {
    if (localStorage.getItem(picture.id)) {
        picture.classList.add("favorite");
    }
});

您还需要稍微更改您的 addFavorites:

function addFavorites(element) {
    var bild = element.id;
    if (localStorage.getItem(bild) === null) {
        localStorage.setItem(bild, bild);
        element.classList.add("favorite");
    } else {
        localStorage.removeItem(bild);
        element.classList.remove("favorite");
    }
}

然后,当然,您将在 CSS 样式中管理 favorite class 的外观。