Heim  >  Fragen und Antworten  >  Hauptteil

javascript – Wenn ich localstorage zum Speichern von JSON-Objekten verwende, hoffe ich, dass der Wert bei jedem Klick in den Speicher eingeblendet wird. Jetzt wird jeder Klick den vorherigen überschreiben.

Dies ist der Code beim Speichern

    $(".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)); 
    }); 

Das Folgende ist die Zeit, es abzuholen

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

Antworte allen(7)Ich werde antworten

  • 过去多啦不再A梦

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

    你这思路不对,应该先从LocalStorage取出原来的值,然后将新数据叠加到原来的值中,然后再次存入LocalStorage。这样就不会出现数据覆盖了

    Antwort
    0
  • 阿神

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

    你是想每个tr都存不同的item吗?

    Antwort
    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里面

    Antwort
    0
  • PHP中文网

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

    先从localStorage取出数据转换成对象,记得做防御判断,然后把想要存的值插入到取出来的对象中去,然后转换成字符串存入localStorage覆盖原来的数据;

    Antwort
    0
  • 滿天的星座

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

    先读取,然后追加,再写入。

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

    Antwort
    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));

    Antwort
    0
  • phpcn_u1582

    phpcn_u15822017-06-30 09:58:32

    var contrastdata = JSON.parse(localStorage.getItem('contrastdata')),contrastdata1={},contrastdataArr=[];
    //如果localStorage.getItem('contrastdata')存在值,就先添加进数组里面
    if(contrastdata){
        contrastdataArr.push(contrastdata)
    }
    $(".top").click(function(){
        //初始化contrastdata1临时变量
         var contrastdata1={};
         //设置contrastdata1
         contrastdata1.Machinedata = $(this).parents('tr').find('td')[0].innerText;
         contrastdata1.UserNamedata = $(this).parents('tr').find('td')[2].innerText;
         contrastdata1.InstrumentIDdata = $(this).parents('tr').find('td')[4].innerText;
         //把contrastdata1添加进contrastdataArr;
         contrastdataArr.push(contrastdata1)
    });
    //页面关闭时把contrastdataArr存储进localStorage(contrastdata)
    localStorage.setItem('contrastdata',JSON.stringify(contrastdataArr));

    Antwort
    0
  • StornierenAntwort