@lookingfor2

Как добавить в localStorage объект, передавая один аргумент?

Мне нужно передавать в localStorage объект с данными, но требует два аргумента. Объект в localStorage должен иметь такой вид:

[
{"column_id":"usermodel-last_name","timestamp":1598557985294,"filling_time":2074,"value":"Первы"},
{"column_id":"usermodel-last_name","timestamp":1598557989343,"filling_time":7,"value":"Первы"},
{"column_id":"usermodel-first_name","timestamp":1598557991271,"filling_time":1925,"value":"апв"}
]


моя функция

document.addEventListener('focusout', function(event) {
    var target = event.target,
        OnFocusTimestamp = returnOnFocusTimestamp();


    if (!target || target.tagName !== 'INPUT') return;
    var name = target.name,
        value = target.value,
        column_id = target.getAttribute('id'),
        timestamp = new Date().getTime(),
        filling_time = (timestamp - OnFocusTimestamp) / 1000;
    var userBehavior = {
        "column_id": column_id,
        "timestamp": OnFocusTimestamp,
        "filling_time": filling_time,
        "value": value
    }
    save(userBehavior)
    console.log(localStorage);
}, true)


function save(data) {
    localStorage.setItem('data', JSON.stringify(data));
}


Но, так объект не принимает вид нужный и при повторном клике не сохраняет данные еще раз ибо он уже есть
  • Вопрос задан
  • 74 просмотра
Решения вопроса 1
Bavashi
@Bavashi
Можно попробовать сделать примерно так:
Объявите переменную счетчик и дополнительный объект для сохранения timestamp'ов:
var varToCountSave = 0;
var userBehaviorToSave = {};

В функции save допишите запись изменений сначала в объект, который будет их сохранять, а потом будете его сериализовать и записывать строкой в ls:
function save(data) {
	userBehaviorToSave[varToCountSave] = data;
  localStorage.setItem('data', JSON.stringify(userBehaviorToSave));
  varToCountSave++;
}
console.log(localStorage.getItem("data"));

В будущем сможете обратно этот объект забирать, парсить и доставать записанные значения.
P.S. Это будет немного отличаться от того в каком виде вы хотите хранить значения в ls, но с одним и тем же ключом так сделать все равно не получится: сохраняться будет только последний результат.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы