場景:
A頁面和B頁面是兩個不同的html。
B頁面以彈窗的形式顯示在A頁面上。
需求:B頁面需要存儲一些數據,每次B頁面刷新時,數據回顯,每次A頁面刷新時,數據重置。
我之前弱智一般的解決辦法:
在A.js中放個全局變量,把B.js里面的數據存進去。
每次B頁面刷新,就去A.js里面取數據。
當時我是不知道頁面刷新就不存在全局變量了,還疑惑了半天我的變量呢我的變量我那么大一個全局變量呢 = =
然后我看着控制台的Network,看着每次頁面刷新所有.js文件重新加載,頓悟。
我這個SB。
所以最后想了想,決定用cookie保存B.js里面的數據,在A.js里面刷新。
對不起,小土狗真的沒見過cookie。
解決方法
1.把需要的數據存成json。
var json = {};
json["key1"].value1 = "abc";
json["key1"].value2 = "def";
2.用cookie保存
// 先把json轉化成字符串
var str = "sTag"+ JSON.stringify(json) + "eTag";
document.cookie = "name" + "=" + str;
這里我為什么要加個sTag tag呢,因為獲取cookie的時候會把所有的cookie全部返回,我打個標簽到時候方便切割,害,我要這名字有🥚用。
3.這樣就可以在控制台的application→cookie里面看到啦。
4.取cookie
// 判斷cookie是否存在
if(document.cookie.indexOf("name") != -1){
// cookie存在,拿到數據
var cookie = document.cookie;
var sIndex = cookie.indexOf("sTag")+4;
var eIndex = cookie.indexOf("eTag")-1;
var str = cookie.substring(sIndex,eIndex) + '}';
var echoValueJson = JSON.parse(str);
切割字符串以后不要忘記收尾哈,加個}
5.清空cookie
document.cookie = "name" + "=" + "";
重名會被覆蓋,沒覆蓋可能路徑有問題哈。
剛剛寫着寫着不知道為什么突然想要跟hr提漲薪,因為我就要從家里搬出來住了,越想工資越低,不知道有沒有漲薪空間。
哎,最近感情也不太順利,希望接下來一切都要好點。
當然最重要還是漲薪。