匹配 2 个数组并根据结果应用更改

Matching 2 arrays and apply changes depending of the results

我在使用 Javascript 时遇到了问题(我是个新手) 我的问题如下:

我的网站在一个页面上显示 50 张图片。 每张图片下方都有一个按钮"Watch later"。 单击此按钮时,按钮的 ID(与其上方图像的 ID 相关)将保存到具有 LocalStorage 的数组中,并且按钮的 class 发生变化以显示此图像是 "saved" 待会儿再看

问题是刷新页面时,按钮会恢复到原来的状态 class。因此,如果用户返回此页面,他将看不到他为以后保存了哪些图片。显然我希望这个按钮在刷新时保持新的 class。

所以我试图解决这个问题的方法是抓取页面的所有按钮 ID 并将它们保存到一个数组中,然后我将这个数组与本地存储中的数组进行比较以找到匹配项。

我不知道的是,在找到匹配的 ID 后,如何更改具有此 ID 的元素的 class。

我的代码:

按钮:

<button type="button" id="006" class="btn btn-default grey addwatchlater">

Javascript :

var allButtonsID = $(".showpics button[id]")      
.map(function() { return this.id; })
.get();

parsed = JSON.parse(localStorage.getItem('idswatched') || "[]");    



var found = false;
var returnArray = [];
for (var i = 0; i < allButtonsID.length; i++) {
if (parsed.indexOf(allButtonsID[i]) > -1) {
found = true;

**// Changing the Class related to the IDs matching the localstorage array**    
**// I was thinking using toggleClass('btn-default btn-primary');**
**// but I don't know how to write so it's changed only for the buttons having matching IDs...**


break;
}
}

抱歉,如果我犯了语法错误,我的母语不是英语。 感谢您的帮助!

如果您在 LocalStorage 上有一个数组,其中包含您为以后保存的项目的 ID,您可以这样做:

$(document).ready(function(){
    $.each(arrayFromLocalStorage, function(key, value){
        $("#"+value).addClass("watchlater");
    });
});

请注意,在我使用的代码中 jquery,因此您应该将其包含在您的项目中。