localStorage - 多重值

时间:2015-06-16 11:52:53

标签: javascript jquery local-storage

我有一个名为“mail”的输入字段。我想在本地存储中添加mailaddresses和id。 mailaddress的值应来自输入字段 每次添加mailaddress时,“mail”和id都应该计算在内。目前,vars“id”和“mail”都有静态值。

有人能给我一个暗示我怎么能这样做的?

这是我的代码:

var id = 1;
var mail = "Mail";

$(".store").on("click", function(){
     var mailaddress = localStorage.getItem("mailaddress");
     var obj = [];
     if(mailaddress){
         obj= JSON.parse(mailaddress);  
     }
     obj.push({"id":  id, "mail":mail});
     localStorage.setItem("mailaddress",JSON.stringify(obj));
 });

$("#show").on("click", function(){
    var item = JSON.parse(localStorage.getItem("mailaddress"));
    alert(item);
    console.log(item);
});
$('#reset').click(function(){
    localStorage.clear();
});

<div id="storage">
<input type="text" id="mail" value=""/>
<button class="store">store</button>
<button id="reset">reset</button>
<button id="show">show</button></div>

http://jsfiddle.net/w3uu6y0r/1/

2 个答案:

答案 0 :(得分:1)

邮件部分非常简单。替换单击处理程序中的邮件变量,只需获取值:

obj.push({"id":  id, "mail":$('#mail').val()});

你可能想要做价值&amp;模式检查输入的电子邮件,这样你就不会得到垃圾邮件。

对于id,你已经拥有了一个id数组,为什么不抓住最大的一个并且+1呢?

if (obj.length > 0) {
        id = Math.max.apply(null, obj.map(function (entry) { return parseFloat(entry.id); })) + 1;
    }
    else {
        id = 1;
    }

好的,让我解释一下这段代码。

obj.map(function (entry) { return parseFloat(entry.id); })

Map是一个迭代数组的函数,并返回一个新数组,其中包含每个return语句的值。因此,如果您有一个[1,2,3]数组且运行[1,2,3].map(function(v) { return v + 1; });,那么您将[2,3,4]。我在这种情况下使用它获取一组id。可能没有必要使用parseFloat,但我对本地存储保持谨慎。

Math.max通常可用于返回两个或更多值之间的最大数字:Math.max(2, 5)将返回5.在这种情况下,我使用apply,因此我可以传递一个数组。它与:Math.max.apply(null, [2,5]);

相同

答案 1 :(得分:1)

您可以检查localStorage中的对象数量,并每次增加id(如果您希望id从1开始,则加1)。

$(".store").on("click", function () {
    var mailaddress = localStorage.getItem("mailaddress");
    var obj = [];
    if (mailaddress) {
        obj = JSON.parse(mailaddress);
    }
    var id = obj.length + 1; // increment the id
    var mail = $('#mail').val(); // get the textbox value
    obj.push({ // push it to obj
        "id": id,
        "mail": mail
    });
    localStorage.setItem("mailaddress", JSON.stringify(obj));
});

小提琴: http://jsfiddle.net/w3uu6y0r/3/