locaStorage和javascript循环

locaStorage和javascript循环,javascript,local-storage,Javascript,Local Storage,我的小应用程序有问题, 你可以在这里看到: 我的问题是:我输入一些注释,然后当我“清除所有”时,我重新输入一个注释, 控制台在刷新时返回lsReturn==null 我明白为什么,但不知道如何解决这个问题 事实上,在全部清除后,我的'var i'的值不是0(它的值是我输入的最后一个音符,如果我输入了5个音符,则为5),因此当我重新输入音符时,它是task-6,因此在刷新时,我的第一个循环失败 我尝试在localstorage.clear之后设置var I=0,但不起作用 jQuery(docu

我的小应用程序有问题, 你可以在这里看到:

我的问题是:我输入一些注释,然后当我“清除所有”时,我重新输入一个注释, 控制台在刷新时返回lsReturn==null

我明白为什么,但不知道如何解决这个问题

事实上,在全部清除后,我的'var i'的值不是0(它的值是我输入的最后一个音符,如果我输入了5个音符,则为5),因此当我重新输入音符时,它是task-6,因此在刷新时,我的第一个循环失败

我尝试在localstorage.clear之后设置var I=0,但不起作用

 jQuery(document).ready(function() {

  // Initial loading of tasks
  var i = 0;

    // clear All

  jQuery('.clear').on('click',function(e){

    e.preventDefault();
    jQuery('#tasks li').remove();
    localStorage.clear();
    jQuery(this).data('erase', true);

  });


  if(localStorage.length){  
     for( i = 0; i < localStorage.length; i++){ 

        var lsReturn = JSON.parse(localStorage.getItem('task-'+i));

        if (lsReturn == null){ // HERE IS THE PROBLEM
          var b = 0; //

        }else{
            jQuery("#tasks").append("<li id='task-"+i+"'>" + lsReturn.text  + " <a href='#'>Delete</a></li>");
           jQuery('#tasks li#task-'+i+'').css('background-color', lsReturn.color );

        }


     }

  }else{

    jQuery('header').after("<p class='error'>no messages</p>");

  }

  // ----------------- ADD A TASK ----------------------//

  jQuery("#tasks-form").submit(function() {

    if (jQuery("#task").val() != "" ) {

      jQuery('#task').attr('placeholder', "Enter a note")

      var text = jQuery("#task").val(); 
      var color = jQuery('#color').val(); 

      var allNotes = {}; 
      var note = {}; 

      note.text = text; 
      note.color = color;

      allNotes['task-'+i] = note; 

      var lsStore = JSON.stringify(allNotes['task-'+i ]);

      localStorage.setItem( "task-"+i, lsStore); 

      var lsStoreReturn = JSON.parse(localStorage.getItem("task-"+i, lsStore)); 

      jQuery("#tasks").append("<li id='task-"+i+"'>"+ lsStoreReturn.text +"<a href='#'>Delete</a></li>"); 
      jQuery('#tasks li#task-'+i+'').css('background-color', lsStoreReturn.color );
      jQuery("#task").val(""); 

      i++; 

    }else{

       jQuery('#task').attr('placeholder', "nothing in it !")

    }

    return false; 

  });

  // ----------------- REMOVE A TASK ----------------------//

  jQuery("#tasks li a").live("click", function(e) {

    e.preventDefault();

    localStorage.removeItem(jQuery(this).parent().attr("id"));

    jQuery(this).parent().remove();

    // PROBLEM solved : if I remove a task #2 in a list of  4 item for example, if i   refresh the list become 0, 1, 3, 4, 
    // so the locastorage loop doesn't find the item 2 

   for(i=0; i<localStorage.length; i++) { // SO I check my locastorage

      if(localStorage.getItem("task-"+i) == null) { // If the task 4 doesn't exist

        localStorage.setItem("task-"+i, localStorage.getItem('task-' + (i+1)));
        // I do : create  task-4 
        // and give him the value of task 5
        localStorage.removeItem('task-'+ (i+1) ); 
        // the i remove task 5
        // so the loop wiil not find task 5 and give him the value of task 6 etc..
      }
    }
  });

});​
jQuery(文档).ready(函数(){
//任务的初始加载
var i=0;
//清除所有
jQuery('.clear')。关于('click',函数(e){
e、 预防默认值();
jQuery(“#tasks li”).remove();
localStorage.clear();
jQuery(this).data('erase',true);
});
if(localStorage.length){
对于(i=0;i之后没有消息

); } //--------------添加任务----------------------// jQuery(“#任务表单”).submit(函数(){ if(jQuery(“#task”).val()!=“”){ jQuery('#task').attr('占位符',“输入注释”) var text=jQuery(“#任务”).val(); var color=jQuery('#color').val(); var allNotes={}; var注释={}; note.text=文本; 注:颜色=颜色; 所有注释['task-'+i]=注释; var lsStore=JSON.stringify(allNotes['task-'+i]); setItem(“任务-”+i,lsStore); var lsStoreReturn=JSON.parse(localStorage.getItem(“任务-”+i,lsStore)); jQuery(“#tasks”).append(
  • 对于(i=0;i按以下方式重置
    i
    变量

    jQuery('.clear').on('click',function(e) {
      e.preventDefault();
      jQuery('#tasks li').remove();
      localStorage.clear();
      jQuery(this).data('erase', true);
      // Need to reset the index counter here.
      i = 0;
    });
    

    这是一个更新的/正在工作的。

    您可以向我们展示重置i的代码吗?它应该可以工作。您不应该从0循环到localstorage.length,可能还有其他值,而不是您的任务。有关如何正确执行,请参阅。非常感谢,我以前尝试过此操作,但不知道为什么,但它不工作……是的,问题已经解决,现在:-/坦斯克!