保存多个本地存储输入

时间:2018-06-03 13:46:56

标签: javascript html json

我希望你的日子表现不错,我试图通过将forStorage解析为带有'for'循环的JSON来保存多个输入但是它没有保存,CONSOLE中的错误:

"Uncaught SyntaxError: Unexpected token J in JSON at position 0
at JSON.parse (<anonymous>)
at HTMLDocument.<anonymous>"

第32行的代码:

 <script>   

    document.addEventListener('DOMContentLoaded', function() {
    //line 32 bellow 

    var values = JSON.parse(localStorage.getItem('emploi') || '{}');              
    // parse stored JSON if it exists otherwise an empty object 

      var inputs = document.getElementsByName('emploi');
      for (let i = 0; i < 3; i++) {
        var x = inputs[i];
        x.value = values[i] || '';// stored value if it exists or empty string

        x.onchange = function() {
          // assign value to the object above
          values[i] = this.value;
          // store updated version of object
          localStorage.setItem('emploi', JSON.stringify(values));
        }
      }
    });

  </script>
           <!--Html-->
           <!--SALE-->
           <input type="text"  name='emploi' placeholder='Sale'>
           <!--les prof-->
           <input type="text"  name='emploi' placeholder='Professeur'>
           <!--les classes-->
           <input type="text"  name='emploi' placeholder='Class'>

1 个答案:

答案 0 :(得分:0)

您正在解析的localStorage内容不是有效的JSON,而是以“J”开头的字符串。

要将localStorage内容安全地解析为JSON并使用空对象作为回退,请将解析包装在try-catch块中:

var values = {};
try {
    values = JSON.parse(localStorage.getItem('emploi') || '{}');        
} catch (ex) {
    console.warn('LocalStorage did not contain valid json, continuing with empty values object: ', ex);
}