Скрипт перезаписывает value на пустое значение даже если его значение заданно версткой. Как это исправить?
Я нашел скрипт, он сохраняет в localstorage значения всех input-ов, которые отмечены определенным классом. И выводит их при повторной загрузке страницы. Скрипт различает разные input-ы по ID.
var elements = document.getElementsByClassName('localstorage-save-text');
for (i=0; i<elements.length; i++) {
(function(element) {
var id = element.getAttribute('id');
element.value = localStorage.getItem(id);
element.oninput = function() {
localStorage.setItem(id, element.value);
};
})(elements[i]);
}
Но если в localStorage нет данных по этому ID, то скрипт перезаписывает его содержимое на пустое значение, даже если value прописано в самой верстке.
Насколько я понимаю это связанно со строчкой element.value = localStorage.getItem(id);
Моя ситуация в том что для input-ов в верстке в value прописаны значения 0. Будьте добры, помогите сделать так чтобы только для value 0 скрипт не вставлял пустое значение в этот input? Но если пользователь впишет туда свое значение, то оно сохранялось в localStorage как и сейчас.
Ответы (1 шт):
сделать так чтобы только для value 0 скрипт не вставлял пустое значение в этот input?
Предложу такой вариант...
var elements = document.getElementsByClassName('localstorage-save-text');
for (i=0; i<elements.length; i++) {
(function(element) {
var id = element.getAttribute('id');
var val = localStorage.getItem(id)
if (val || element.value != 0) element.value = val;
element.oninput = function() {
localStorage.setItem(id, element.value);
};
})(elements[i]);
}