自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

HTML5 – 本地存儲

移動開發(fā)
HTML5 Web Storage API 讓在本地存儲數據成為了可能,而且可以存儲 5M 的數據,這 5M 的空間可供一個域任意使用。注意是一個域,這也就是說所保存的數據是不可跨域訪問的。

HTML5 Web Storage API 讓在本地存儲數據成為了可能,而且可以存儲 5M 的數據,這 5M 的空間可供一個域任意使用。注意是一個域,這也就是說所保存的數據是不可跨域訪問的。

我一向喜歡在實踐中學習新的知識,今天也不例外,我利用 loalStorage 做了一個便簽小應用,數據存放在瀏覽器中。 

怎么樣,還不錯吧?下面就用這個例子的開發(fā)流程來介紹 localStorage 吧!

起步

在這里,我就不在粘貼 HTML 和 CSS 代碼了,如果你想在本地運行這個例子,我將在文章末尾給出源碼下載地址。

首先,我想講講該怎么創(chuàng)建這么一個便簽,它的具體過程應該像下面這樣。

  1. 獲取用戶輸入的內容
  2. 獲取便簽的等級,這個是在 <select> 中選擇的。
  3. 將內容和等級保存在一個對象中,利用 JSON 轉換為字符串。
  4. 生成一個 key, 用于保存數據,為了查找方便,創(chuàng)建一個數組,單獨來存儲 key, 當然這個數組也利用 JSON 轉換成字符串。
  5. 使用 localStorage 的 setItem() 方法保存便簽對象和 key數組字符串。
  6. 將標簽添加到 DOM 結構。

按照上述流程,可以編寫下面的代碼

  1. function createNote() { 
  2.     var noteElement = document.getElementById("note"); 
  3.     var noteValue = noteElement.value; 
  4.     noteElement.value = ""
  5.  
  6.     var levelObj = document.getElementById("note-level"); 
  7.     var index = levelObj.selectedIndex; 
  8.     var level = levelObj[index].value; 
  9.  
  10.     var noteObj = { 
  11.         "value": noteValue, 
  12.         "level"level 
  13.     } 
  14.  
  15.     var date = new Date(); 
  16.     var key = "note_" + date.getTime(); 
  17.     localStorage.setItem(key, JSON.stringify(noteObj)); 
  18.  
  19.     var notesArray = getNotesArray(); 
  20.     notesArray.push(key); 
  21.     localStorage.setItem("notesArray", JSON.stringify(notesArray)); 
  22.  
  23.     addNoteToDOM(key, noteObj); 
  24.  

值得注意的是,localStorage 只能保存字符串的值,所以我們在這里才不得不使用 JSON 將其轉換成字符串。你可以使用下屬代碼存儲一個整數或者浮點數。

  1. localStorage.setItem("my_num",10); 

這行代碼確實可以運行,那是因為 JS 自動將其轉換成了字符串,所以如果你想取出一個整數,你不得不進行轉換,就像下面這樣。

  1. var num = parseInt(localStorage.getItem("my_num")); 

上面的代碼中,使用了兩個自定義的函數,那就是 getNotesArray() 和 addNoteToDOM(),根據名字可以很容易判斷出它們的功能。不過讓人費解的是,我們?yōu)槭裁匆獙iT使用一個數組去保存 key 呢?

有一點你需要知道,在實際的網站中,你不可能只存儲便簽吧?你還需要存儲很多其它的數據,如果保存了大量的其它數據,那么尋找便簽就是一項十分耗時的任務了。我為什么要尋找便簽?

如果你的用戶關掉了瀏覽器,然后又重新打開了這個網站怎么辦呢?這個時候我們就不得不去尋找便簽了。好了,下面來看看 getNotesArray() 函數吧~

  1. function getNotesArray() { 
  2.     var notesArray = localStorage.getItem("notesArray"); 
  3.  
  4.     if (!notesArray) { 
  5.         notesArray = []; 
  6.         localStorage.setItem("notesArray", JSON.stringify(notesArray)); 
  7.     } else { 
  8.         notesArray = JSON.parse(notesArray); 
  9.     } 
  10.  
  11.     return notesArray; 
  12.  

利用 localStorage.getItem() 去獲取這個數組,如果這個數組不存在就創(chuàng)建一個,然后將其轉換成字符串保存起來,如果數組已經存在,那就將其從字符串轉成數組??傊祷匾粋€數組,供我們使用。

好了,大概已經知道了,下面就是 addNoteToDOM() 函數了,這個函數就更簡單啦,下面來看看。

  1. function addNoteToDOM(key, noteObj) { 
  2.     var notes = document.getElementById("note-list"); 
  3.     var note = document.createElement("li"); 
  4.     note.setAttribute("id"key); 
  5.     note.onclick = deleteNote; 
  6.  
  7.     var value = noteObj.value; 
  8.     note.innerHTML = value; 
  9.  
  10.     var level = noteObj.level
  11.     note.setAttribute("class"level); 
  12.     notes.appendChild(note); 
  13.  

首先,需要解釋一點,#note-list 是一個 <ul> 元素,而且我們的便簽也都是由其子元素 <li> 組成的。接下來就簡單了,我們將值賦給 <li>, 然后根據標簽的等級為其添加不同的背景顏色,這里是通過為其設置 class 來達到這一目的。

值得注意的是,這里我們將 key 作為參數傳遞進來了,而且利用 key 的值為 <li> 設置了 id 屬性,這是為了達到刪除的目的,畢竟我們不能只創(chuàng)建標簽而不知道如果刪除吧,所以在這里還為 <li> 設置了點擊事件。

  1. function deleteNote(e) { 
  2.     var key = e.target.id; 
  3.     localStorage.removeItem(key); 
  4.     var notesArray = getNotesArray(); 
  5.  
  6.     for (var i = 0; i < notesArray.length; i++) { 
  7.         if (key === notesArray[i]) { 
  8.             notesArray.splice(i, 1); 
  9.         } 
  10.     } 
  11.     localStorage.setItem("notesArray", JSON.stringify(notesArray)); 
  12.  
  13.     deleteNoteFromDOM(key); 
  14.  

當 <li> 元素被點擊,就會傳進來一個 event 對象,通過 target 就可以獲得觸發(fā)事件的對象,我們獲取到這個對象的 id, 將其從 DOM 刪除。

不過這個不是重點,刪除標簽,意味著,我們還需要將其從本地存儲中將其值刪除,而且要把它從 key 數組中除名,我們用 removeItem 和 splice() 來大到了這一目的。

拓展

上面,我們已經把 localStorage 的使用講解完畢了,而且上面的代碼包含了便簽應用的核心代碼。值得一提的是,還有一個 sessionStorage ,它的使用和 localStorage 完全相同,唯一不同的是,一旦瀏覽器窗口關閉,保存的數據將會被全部刪除。

當然,這是 HTML5 中的屬性,所以我們在使用的時候需要進行檢測,可以使用下面的代碼檢測瀏覽器是否支持 localStorage。 

  1. if (window["localStorage"]) { 
  2.     // your logic code 
  3.  
責任編輯:龐桂玉 來源: Android開發(fā)中文站
相關推薦

2015-05-22 10:06:58

2015-08-13 15:56:44

HTML5本地存儲Localstorag

2019-05-29 19:00:35

HTML5存儲方式前端

2012-12-03 13:53:38

IBMdW

2018-05-30 08:54:00

離線存儲HTML5

2009-05-08 13:46:38

JavaScriptHTML5離線存儲

2012-02-20 13:45:26

HTML5移動開發(fā)程序

2013-01-24 10:26:04

HTML5HTML 5HTML5的未來

2011-05-13 17:36:05

HTML

2013-10-21 15:24:49

html5游戲

2011-05-12 15:42:16

HTML5

2011-05-13 17:41:40

2011-01-14 17:53:33

HTML5cssweb

2023-03-16 09:00:00

HTML5HTML語言

2012-04-24 10:08:12

HTML5

2013-03-22 08:59:57

HTML5移動應用Web App

2014-03-20 10:50:44

HTML5 定位技術

2014-12-30 17:13:51

HTML5

2013-01-18 10:59:44

IBMdW

2011-11-11 15:54:36

AdobeHTML5
點贊
收藏

51CTO技術棧公眾號