Что вам нужно сделать, это запросить все элементы-флажки и выполнить их итерацию.Ваш код в настоящее время выбирает элементы ons-list-item
вместо флажков.
Сначала начните с того, что функция выберет правильные элементы:
function savefunction(){
var checkboxes = document.querySelectorAll('.products'); // <-- select the checkboxes
for (var i = 0; i < checkboxes.length; i += 1) { // <-- iterate
if (checkboxes[i].checked) {
// store values
} else { // <-- this branch is optional (I don't know if you need it)
// remove previously stored values
}
}
}
Как видите, я также добавилelse
ветвь, если вы также хотите удалить ранее сохраненное значение, когда пользователь снимает флажок ранее установленный флажок.Однако, если вам это не нужно, просто удалите ветвь else
.
С этого момента у вас есть две возможности: вы можете либо сохранять каждый отмеченный флажок отдельно в localStorage
, или вы можете сохранить список всех отмеченных флажков.
Каждый блок отдельно (не забудьте удалить ветку else
, если выне нужно)
function savefunction(){
var checkboxes = document.querySelectorAll('.products');
for (var i = 0; i < checkboxes.length; i += 1) {
if (checkboxes[i].checked) {
localStorage.setItem(checkbox[i].name, checkbox[i].value); // <-- stores a value
} else {
if (localStorage.getItem(checkbox[i].name)) { // <-- check for existance
localStorage.removeItem(checkbox[i].name); // <-- remove a value
}
}
}
}
Список всех ящиков
function savefunction(){
var checkboxes = document.querySelectorAll('.products');
var checked = {};
for (var i = 0; i < checkboxes.length; i += 1) {
if (checkboxes[i].checked) {
checked[checkbox[i].name] = checkbox[i].value;
}
// <-- no need for else, because we simply override
}
localStorage.setItem('checked_boxes', JSON.stringify(checked)); // <-- localStorage can only store `String` values
}
При использовании второго подхода не забудьте позвонитьJSON.parse
для сохраненных значений, когда вы хотите использовать их (это только для демонстрационных целей):
function restoreCheckboxes (checkboxElements) {
var checkboxStates = localStorage.getItem('checked_boxes'),
i;
if (checkboxStates) {
checkboxStates = JSON.parse(checkboxStates); // <-- parse string to object
for (i = 0; i < checkboxElements.length; i += 1) {
if (checkboxStates.hasOwnProperty(checkboxElements[i].name)) {
checkboxElements[i].checked = true;
}
}
}
}
Еще один момент заключается в следующем: хотите ли вы сохранить эту информацию между различными сессиями или столько, сколько текущий сеанс активен ?Если последнее верно, рассмотрите возможность использования sessionStorage
вместо localStorage
.Вы можете прочитать об их различиях на MDN