在Javascript中创建存储的数组,并在每次单击时推送元素ID

时间:2016-01-22 08:30:12

标签: javascript jquery arrays local-storage

我试图在单击元素时将元素ID放入数组中,并将此数组存储在本地存储中。然后调用此数组,并在每次单击元素时推送更多元素ID。对我来说,这比我想象的要复杂得多。

我正在使用javascript / jquery。

我的代码:

var reportArray = []
var storedArray = JSON.parse(localStorage.getItem("reportarray"));
if(storedArray == '') {
    reportArray.push("foo");
    localStorage.setItem("reportarray", JSON.stringify(reportArray));
} else {
    reportArray.push(storedArray);
    localStorage.setItem("reportarray", JSON.stringify(storedArray));
}

我意识到这段代码可能已经过时了(它甚至无法正常工作),但我至少试一试。请帮忙吗?

4 个答案:

答案 0 :(得分:2)

它看起来并不遥远。我看到的主要问题是,在else子句中,如果storedArray已经存在,那么你就不要将任何新元素推送到它。在尝试解析之前检查reportarray为null也可能更安全。

答案 1 :(得分:1)

API:

function storeId(id) {
    var ids = JSON.parse(localStorage.getItem('reportArray')) || [];

    if (ids.indexOf(id) === -1) {
        ids.push(id);
        localStorage.setItem('reportArray', JSON.stringify(ids));
    }

    return id;
}

该函数使用ID存储在本地存储中。如果本地存储项尚不存在,则会创建一个全新的阵列,否则将使用本地存储中的阵列。此外,确保在将其推送到存储时id尚不存在。

用法:

$(function () {
    $('.btn').click(function () {
        var id = $(this).attr('id');
        storeId(id);
    });
});

<强> EXAMPLE

答案 2 :(得分:0)

如果您需要在本地存储中放置ID,则可能是策略:

var reportArray = localStorage.getItem("reportarray");
if(reportArray != null && reportArray != '') {
    var storedArray = JSON.parse(reportArray);
    storedArray.push("foo");
    localStorage.setItem("reportarray", JSON.stringify(storedArray));
} else {
    var storedArray = ["foo"];
    localStorage.setItem("reportarray", JSON.stringify(storedArray));
}

显然,您需要输入ID而不是"foo"

答案 3 :(得分:0)

我会这样说:

HTML:

<button id="elt1">Elt 1</button>
<button id="elt2">Elt 2</button>
<button id="elt3">Elt 3</button>
<button id="elt4">Elt 4</button>
<button id="elt5">Elt 5</button>

JS:

$(document).ready(function(){
  $('button').click(function(){
    var id = this.id;
    var reportArray = JSON.parse(localStorage.getItem("reportarray")) || [];
    if (!~reportArray.indexOf(id)) reportArray.push(this.id);
    localStorage.setItem("reportarray", JSON.stringify(reportArray));
  });
});

JS(即使已经存在,也推送id):

$(document).ready(function(){
  $('button').click(function(){
    var id = this.id;
    var reportArray = JSON.parse(localStorage.getItem("reportarray")) || [];
    reportArray.push(this.id);
    localStorage.setItem("reportarray", JSON.stringify(reportArray));
  });
});