Мы имеем два случая здесь
Case 1:
Хочет хранить значения флажка для элементов с разными названиями здесь является пример для этого сценария:
<input type="checkbox" class="faChkRnd" name="favorite1" id="like" value="val1">
<input type="checkbox" class="faChkRnd" name="favorite2" id="like1" value="val2">
<input type="checkbox" class="faChkRnd" name="favorite3" id="like2" value="val3">
здесь все checkboxs есть имя, которое начинается с favorite
, так что мы можем ссылаться на них, используя эту информацию, а затем сохранить каждое имя флажка с соответствующим значением в качестве отдельного пункта в localStorage
Вот код JS:
$("input[name*='favorite']").change(function() {
var name = $(this).attr('name'),
value = $(this).val();
localStorage.setItem(name,value);
console.log(localStorage.getItem(name));
});
Случай 2:
Мы хотим, чтобы ссылаться на несколько checkboxs с же именем. Сначала мы изменяем значение имени атрибута, как показано в следующем:
<input type="checkbox" class="faChkRnd" name="favorite" id="like" value="val1">
<input type="checkbox" class="faChkRnd" name="favorite" id="like1" value="val2">
<input type="checkbox" class="faChkRnd" name="favorite" id="like2" value="val3">
Во-вторых, мы получаем данные, как мы делали раньше, но специальная вещь на этот раз в том, что eventListener
срабатывает, когда каждый элемент с этим именем изменяет свойство checked, поэтому значение генерируется снова с правильным значением, и это массив, что точно, потому что у нас есть несколько значений
Теперь последний трюк состоит в том, чтобы преобразовать этот массив значений в строку, используя удивительность JSON объект, подобный этому :
var valueStringified = JSON.stringify(value);
ИЛИ достаточно просто использовать свой собственный разделитель, чтобы присоединиться значения массива, например:
var valueStringified = value.join(',');
Теперь хранить его в LocalStorage, как одна строка
localStorage.setItem('favorite',valueStringified);
И когда вы хотите получить значение элемента, очень просто получить имя элемента localStorage.getItem('favorite')
, а затем разделить его, чтобы получить массив, используя предыдущий разделитель, что-то вроде этого:
var values = localStorage.getItem('favorite').split(',');
Наконец, это он
Here is a jsfiddle example
Надеется, что это помогает.
эти флажки имеют одно и то же имя .... почему? Также вы пытаетесь установить их все на один и тот же ключ в хранилище ... нужно использовать массив для этого. Каждый будет перезаписывать последние – charlietfl
Хорошо, ну, я бы не задал вопрос, знаю ли я, как это сделать, не так ли? –