首頁  >  問答  >  主體

javascript - 用localstorage存json物件的時候 希望實現每次點擊 把值一直疊加到儲存裡面 現在每次點擊會覆蓋掉之前的

這是儲存的時候的程式碼

    $(".top").click(function(){ 
        var contrastdata = new Object;
        contrastdata.Machinedata = $(this).parents('tr').find('td')[0].innerText;
        contrastdata.UserNamedata = $(this).parents('tr').find('td')[2].innerText;
        contrastdata.InstrumentIDdata = $(this).parents('tr').find('td')[4].innerText;
        localStorage.setItem('contrastdata',JSON.stringify(contrastdata)); 
    }); 

下面是取的時候

        var contrastdata = JSON.parse(localStorage.getItem('contrastdata'));
        var Machinedata = contrastdata.Machinedata;
        var UserNamedata = contrastdata.UserNamedata;
        var InstrumentIDdata = contrastdata.InstrumentIDdata;
習慣沉默習慣沉默2669 天前1100

全部回覆(7)我來回復

  • 过去多啦不再A梦

    过去多啦不再A梦2017-06-30 09:58:32

    你這想法不對,應該先從LocalStorage取出原來的值,然後將新資料疊加到原來的值中,然後再次存入LocalStorage。這樣就不會出現資料覆蓋了

    回覆
    0
  • 阿神

    阿神2017-06-30 09:58:32

    你是想每個tr都存不同的item嗎?

    回覆
    0
  • 習慣沉默

    習慣沉默2017-06-30 09:58:32

    覆蓋是因為你每次存放時名字沒變
    你可以改成這樣
    var nums = 0;
    $(".top").click(function(){

                var contrastdata = new Object;
                contrastdata.Machinedata = $(this).parents('tr').find('td')[0].innerText;
                contrastdata.UserNamedata = $(this).parents('tr').find('td')[2].innerText;
                contrastdata.InstrumentIDdata = $(this).parents('tr').find('td')[4].innerText;
                localStorage.setItem('contrastdata_'+nums,JSON.stringify(contrastdata)); 
                nums++;
            }); 

    下邊取值的時候再根據nums的值循環
    或者是改變數據結構,用一個對象存儲數據,每次點擊把數據加到對象裡面,然後把對象存進localstroage裡面

    回覆
    0
  • PHP中文网

    PHP中文网2017-06-30 09:58:32

    先從localStorage取出資料轉換成對象,記得做防禦判斷,然後把想要存的值插入到取出來的對像中去,然後轉換成字串存入localStorage覆蓋原來的資料;

    回覆
    0
  • 滿天的星座

    滿天的星座2017-06-30 09:58:32

    先讀取,然後追加,再寫入。

    // 读取已存入的数据;
    // `|| []`是为了第一次存取时,初始化存入的数据结构,想要追加就得用数组
    let temp = JSON.parse(localStorage.getItem('contrastdata')) || [];
    // 追加数据
    temp.push({
        Machinedata: 'abc',
        UserNamedata: 123
    });
        
    localStorage.setItem(temp);

    回覆
    0
  • 学习ing

    学习ing2017-06-30 09:58:32

    在一開始的時候先取值賦給變量,然後在點擊事件裡面去進行操作,數據暫時不需要直接去存儲,在跳轉頁面或者需要存儲的時候再進行存儲,不然每次點擊的時候存一下,然後取一下,很麻煩。

    var contrastdata = JSON.parse(localStorage.getItem('contrastdata'));
    if(!contrastdata){
       contrastdata = {};
    }
    $(".top").click(function(){
         contrastdata.Machinedata = $(this).parents('tr').find('td')[0].innerText;
         contrastdata.UserNamedata = $(this).parents('tr').find('td')[2].innerText;
         contrastdata.InstrumentIDdata = $(this).parents('tr').find('td')[4].innerText;
    });
    
    //页面做跳转或者需要存的时候再存储
    localStorage.setItem('contrastdata',JSON.stringify(contrastdata));

    回覆
    0
  • phpcn_u1582

    phpcn_u15822017-06-30 09:58:32

    雷雷

    回覆
    0
  • 取消回覆