javascript - 如何将多个复选框值保存到本地存储?

标签 javascript jquery checkbox local-storage

我正在尝试在本地存储中保存多个复选框,请参阅下面的代码,您就会明白这一点。

到目前为止我已经尝试过:

$(function () {
var data = localStorage.getItem("favorite");

if (data !== null) {
    $("input[name='favorites']").attr("checked", "checked");
}
});
$("input[name='favorites']").click(function () {

if ($(this).is(":checked")) {
    localStorage.setItem("favorite", $(this).val());
} else {
    localStorage.removeItem("favorite");
}
});

HTML

<input type="checkbox" class="faChkRnd" name="favorite1" id="like">
<input type="checkbox" class="faChkRnd" name="favorite2" id="like1">
<input type="checkbox" class="faChkRnd" name="favorite3" id="like2">

最佳答案

简单地序列化它们。

$('.faChkRnd').on('click', function() {
    var fav, favs = [];
    $('.faChkRnd').each(function() { // run through each of the checkboxes
        fav = {id: $(this).attr('id'), value: $(this).prop('checked')};
        favs.push(fav);
    }
    localStorage.setItem("favorites", JSON.stringify(favs));
});

它们将像这样保存在 JSON 中:

"[{\"id\": \"like\", \"value\": true},{\"id\": \"like2\", \"value\": true},{\"id\": \"like3\", \"value\": true}]"

稍后可以加载:

var favorites = JSON.parse(localStorage.getItem('favorites'));

然后循环重新分配:

for (var i=0; i<favorites.length; i++) {
    $('#' + favorites[i].id ).prop('checked', favorites[i].value);
}

这是一个 working fiddle .您可以选中一个框,然后刷新以查看加载的值。

关于javascript - 如何将多个复选框值保存到本地存储?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34831745/

相关文章:

javascript - 文件与文件内容的不同 sha256 哈希值作为 WordArray

javascript - Array.indexOf 还是之间?

javascript - Google Maps API v3 调整大小事件

javascript - html 或 js - 在页面中创建大量类似的 html 标签

javascript - 复选框未完成完成功能 html javascript

javascript - webpack、react 和 babel : Uncaught TypeError: Super expression must either be null or a function, 未定义

javascript - 如何 knockout svg 文本元素?

jquery - 求flot中选定的总和

javascript - <li> html 条目内的复选框不可点击 - 与用于折叠/展开列表项的 javascript 结合使用

ios - 如何在 ionic 框架中为 ios 制作复选框?