Скрипт перезаписывает 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 шт):

Автор решения: ksa

сделать так чтобы только для 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]);
    }

→ Ссылка