Вы перезаписываете lastname
каждый раз, когда вы звоните setItem
, поэтому выигрывает последний (сохраняющий "Jones"
).
Если вы хотите сохранить более одного элемента, либо:
Используйте другую клавишу (lastname1
, lastname2
, ...) или
Сохранение строки в каком-либо формате, который можно разбирать на отдельные элементы, например, массив, который вы JSON.stringify
сохраняете и JSON.parse
при загрузке
Примечание: к сожалению, проверка typeof
недостаточна, чтобы определить, можете ли вы использовать localStorage
, потому что в некоторых браузерах в режиме частного просмотра typeof
скажет, что он есть, но выдает ошибку, когда Вы пытаетесь что-то сохранить. Единственный способ узнать наверняка - это попытаться что-то сохранить:
// Once on page load
const canUseStorage = typeof localStorage !== "undefined" && (() {
const key = "_test_storage";
const now = String(Date.now());
try {
localStorage.setItem(key, now);
const flag = localStorage.getItem(key) === now;
try {
localStorage.removeItem(key);
} catch (e) {
}
return flag;
} catch (e) {
return false;
}
})();
// Then use `canUseStorage` as necessary to decide if you can use it
(Также обратите внимание, что typeof
является оператором, а не функцией. Нет необходимости в паренсе вокруг операнда.)