昨天 Day19 提到了 cookie
,但是它有一些限制,像是
那如果我們只是需要單純將一些不重要但常用到的資料存在用戶端呢?
這時候我們可以使用 HTML5 新增的 localStorage
,它的特點為
和 localStorage
常常被一起討論的是 sessionStorage
,它和 localStorage
除了存活時間以外,其他特性都一樣,sessionStorage
在每次分頁或瀏覽器關掉後就會清除。
要在哪裡查看它們呢?
一樣可以到瀏覽器自帶的開發者工具查看:
那接下來就來看看 JS 如何操作它們吧!
瀏覽器儲存在本地端的資料,格式為
key : value
。
需要注意的是「value 的型態只有 String
」!
以下範例為: 儲存一個名稱為 userName
的屬性,而它的值為 Bob
。
var name = 'Bob';
localStorage.setItem('userName', name);
取得特定屬性的值,
localStorage.getItem('userName'); // Bob
結合上述兩者,範例中提供了一個輸入框,能夠儲存名字,並且在點選顯示名字的按鈕時,從 localStorage
撈出 userName
。
<h2>請輸入你的名字:</h2>
<input type="text" id="userName">
<input type="button" id="submit" value="送出">
<input type="button" id="showName" value="顯示名字">
var submit = document.getElementById('submit');
submit.addEventListener('click', function(){
var name = document.getElementById('userName').value;
localStorage.setItem('userName', name);
alert("saved");
});
var showName = document.getElementById('showName');
showName.addEventListener('click', function(){
var name = localStorage.getItem('userName');
alert(name);
});
移除一個特定的屬性,
localStorage.removeItem('userName');
因為 localStorage
不會自己過期,若是想要一次清除,可以使用這個方法,
localStorage.clear();
相似於 localStorage
,不同之處在於 sessionStorage
在瀏覽器關掉後就自動清除。
sessionStorage.setItem("key", value);
sessionStorage.getItem('key');
sessionStorage.removeItem("key");
由於 value
只能存入 String
,所以無法儲存其他類型的數據,Ex: Array、Object...
所以可以使用 JSON
的方法來轉換,好方便存取。
JSON
是一種資料交換的格式,如果有不清楚的,我會在明天提到Ajax
時再更詳細介紹。
使用 JSON.stringify
將其他類型的數據轉為字串。
var arr = ['a','b','c'];
console.log(arr + " is " + typeof(arr));
// [a, b, c] is object
var arrToStr = JSON.stringify(arr);
console.log(arrToStr + " is " + typeof(arrToStr));
// [\"a\",\"b\",\"c\"] is string
使用 JSON.parse
解析轉換過的陣列字串,將它還原成原先類型。
var strToArr = JSON.parse(arrToStr);
console.log(strToArr + " is " + typeof(strToArr));
// [a, b, c] is object
那今日的分享就到這,我們明天見