javascript - 用localstorage存json對(duì)象的時(shí)候 希望實(shí)現(xiàn)每次點(diǎn)擊 把值一直疊加到儲(chǔ)存里面 現(xiàn)在每次點(diǎn)擊會(huì)覆蓋掉之前的
問(wèn)題描述
這是存的時(shí)候的代碼
$('.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)); });
下面是取的時(shí)候
var contrastdata = JSON.parse(localStorage.getItem(’contrastdata’));var Machinedata = contrastdata.Machinedata;var UserNamedata = contrastdata.UserNamedata;var InstrumentIDdata = contrastdata.InstrumentIDdata;
問(wèn)題解答
回答1:你這思路不對(duì),應(yīng)該先從LocalStorage取出原來(lái)的值,然后將新數(shù)據(jù)疊加到原來(lái)的值中,然后再次存入LocalStorage。這樣就不會(huì)出現(xiàn)數(shù)據(jù)覆蓋了
回答2:你是想每個(gè)tr都存不同的item嗎?
回答3:覆蓋是因?yàn)槟忝看未鎯?chǔ)時(shí)名字沒(méi)變你可以改成這樣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++;});
下邊取值的時(shí)候再根據(jù)nums的值循環(huán)或者是改變數(shù)據(jù)結(jié)構(gòu),用一個(gè)對(duì)象存儲(chǔ)數(shù)據(jù),每次點(diǎn)擊把數(shù)據(jù)加到對(duì)象里面,然后把對(duì)象存進(jìn)localstroage里面
回答4:先從localStorage取出數(shù)據(jù)轉(zhuǎn)換成對(duì)象,記得做防御判斷,然后把想要存的值插入到取出來(lái)的對(duì)象中去,然后轉(zhuǎn)換成字符串存入localStorage覆蓋原來(lái)的數(shù)據(jù);
回答5:先讀取,然后追加,再寫(xiě)入。
// 讀取已存入的數(shù)據(jù);// `|| []`是為了第一次存取時(shí),初始化存入的數(shù)據(jù)結(jié)構(gòu),想要追加就得用數(shù)組let temp = JSON.parse(localStorage.getItem(’contrastdata’)) || [];// 追加數(shù)據(jù)temp.push({ Machinedata: ’abc’, UserNamedata: 123}); localStorage.setItem(temp);回答6:
在一開(kāi)始的時(shí)候先取值賦給變量,然后在點(diǎn)擊事件里面去進(jìn)行操作,數(shù)據(jù)暫時(shí)不需要直接去存儲(chǔ),在跳轉(zhuǎn)頁(yè)面或者需要存儲(chǔ)的時(shí)候再進(jìn)行存儲(chǔ),不然每次點(diǎn)擊的時(shí)候存一下,然后取一下,很麻煩。
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;});//頁(yè)面做跳轉(zhuǎn)或者需要存的時(shí)候再存儲(chǔ)localStorage.setItem(’contrastdata’,JSON.stringify(contrastdata));回答7:
var contrastdata = JSON.parse(localStorage.getItem(’contrastdata’)),contrastdata1={},contrastdataArr=[];//如果localStorage.getItem(’contrastdata’)存在值,就先添加進(jìn)數(shù)組里面if(contrastdata){ contrastdataArr.push(contrastdata)}$('.top').click(function(){ //初始化contrastdata1臨時(shí)變量 var contrastdata1={}; //設(shè)置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添加進(jìn)contrastdataArr; contrastdataArr.push(contrastdata1)});//頁(yè)面關(guān)閉時(shí)把contrastdataArr存儲(chǔ)進(jìn)localStorage(contrastdata)localStorage.setItem(’contrastdata’,JSON.stringify(contrastdataArr));
相關(guān)文章:
1. javascript - 原生JS和jQuety關(guān)于設(shè)置圖片輪播定時(shí)器問(wèn)題2. 初來(lái)乍到,相對(duì)路徑問(wèn)題,新手求教3. javascript - 請(qǐng)問(wèn)為啥這個(gè)不能渲染成功?4. 老師您好!我有一個(gè)問(wèn)題、5. c++ - 如何在python的阻塞的函數(shù)中獲取變量值6. javascript - iframe 為什么加載網(wǎng)頁(yè)的時(shí)候滾動(dòng)條這樣顯示?7. list - python 求助8. 后端開(kāi)發(fā) - mysql按時(shí)間分段統(tǒng)計(jì)的sql語(yǔ)句怎么寫(xiě)好?9. mysql - 在下剛?cè)腴T(mén)sql 關(guān)于sql的語(yǔ)法詢問(wèn)10. 哭遼 求大佬解答 控制器的join方法怎么轉(zhuǎn)模型方法
