【问题标题】:Matching 2 arrays and apply changes depending of the results匹配 2 个数组并根据结果应用更改
【发布时间】:2015-07-28 18:12:23
【问题描述】:

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

我的网站在一个页面上显示 50 张图片。 每张图片下方都有一个“稍后观看”按钮。 单击此按钮时,按钮的 ID(与其上方图像的 ID 相关)将保存到具有 LocalStorage 的数组中,并且按钮的类更改以显示此图像已“保存”以供稍后观看。

问题是当页面刷新时,按钮会回到原来的类。因此,如果用户返回此页面,他将看不到他保存了哪些图片以供以后使用。显然,我希望这些按钮能够通过刷新保持他们的新类。

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

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

我的代码:

按钮:

<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;
}
}

对不起,如果我犯了语法错误,我不是以英语为母语的人。 感谢您的帮助!

【问题讨论】:

  • $('button#' + allButtonsID[i]) - 我认为它应该可以解决问题。多亏了这一点,您应该能够查询具有给定 id 的按钮元素。
  • 您好,谢谢您的 sintax 是正确的,但它不起作用。问题不是你的代码,而是我的问题……

标签: javascript arrays local-storage


【解决方案1】:

如果您在 LocalStorage 上有一个数组,其中包含您为以后保存的项目的 ID,您可以执行以下操作:

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

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

【讨论】:

  • 您好,谢谢!我喜欢你的代码和它背后的逻辑。我试过了,但没有结果:var idsSaved = localStorage.getItem('idswatched'); $(document).ready(function(){ $.each(idsSaved, function(key, value){ $("#"+value).removeClass('btn-default'); $("#"+value).addClass('btn-primary'); }); });
  • 是的,你是对的,我在这里创建了一个,再次感谢 [Jsfiddle]:jsfiddle.net/02z6zdu6/2/#&togetherjs=3vma8t0vBP
  • 问题是当你从LocalStorage中检索数组时,你检索的是一个字符串而不是一个数组,所以$.each不能正常工作。
  • 我叉了你的小提琴。我为您的问题创建了一个丑陋的解决方案,但它可以工作fiddle
  • 是的!我看着你在我的小提琴上工作,我非常感谢,再次感谢 Ivan
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-03-19
  • 1970-01-01
  • 2019-09-15
  • 2013-04-18
  • 2018-09-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多