成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

HTML5 – 本地存儲

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

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

我一向喜歡在實(shí)踐中學(xué)習(xí)新的知識,今天也不例外,我利用 loalStorage 做了一個(gè)便簽小應(yīng)用,數(shù)據(jù)存放在瀏覽器中。 

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

起步

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

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

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

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

  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 將其轉(zhuǎn)換成字符串。你可以使用下屬代碼存儲一個(gè)整數(shù)或者浮點(diǎn)數(shù)。

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

這行代碼確實(shí)可以運(yùn)行,那是因?yàn)?JS 自動(dòng)將其轉(zhuǎn)換成了字符串,所以如果你想取出一個(gè)整數(shù),你不得不進(jìn)行轉(zhuǎn)換,就像下面這樣。

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

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

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

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

  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() 去獲取這個(gè)數(shù)組,如果這個(gè)數(shù)組不存在就創(chuàng)建一個(gè),然后將其轉(zhuǎn)換成字符串保存起來,如果數(shù)組已經(jīng)存在,那就將其從字符串轉(zhuǎn)成數(shù)組。總之,要返回一個(gè)數(shù)組,供我們使用。

好了,大概已經(jīng)知道了,下面就是 addNoteToDOM() 函數(shù)了,這個(gè)函數(shù)就更簡單啦,下面來看看。

  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.  

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

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

  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.  

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

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

拓展

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

當(dāng)然,這是 HTML5 中的屬性,所以我們在使用的時(shí)候需要進(jìn)行檢測,可以使用下面的代碼檢測瀏覽器是否支持 localStorage。 

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

2015-05-22 10:06:58

2015-08-13 15:56:44

HTML5本地存儲Localstorag

2019-05-29 19:00:35

HTML5存儲方式前端

2009-05-08 13:46:38

JavaScriptHTML5離線存儲

2018-05-30 08:54:00

離線存儲HTML5

2012-12-03 13:53:38

IBMdW

2012-02-20 13:45:26

HTML5移動(dòng)開發(fā)程序

2013-01-24 10:26:04

HTML5HTML 5HTML5的未來

2013-10-21 15:24:49

html5游戲

2011-05-13 17:36:05

HTML

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

2011-05-12 15:42:16

HTML5

2014-12-30 17:13:51

HTML5

2013-03-22 08:59:57

HTML5移動(dòng)應(yīng)用Web App

2014-03-20 10:50:44

HTML5 定位技術(shù)

2012-11-30 10:42:00

IBMdW

2012-05-22 08:52:09

HTML5
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 一区二区在线免费观看 | 九九热九九 | 婷婷91 | 亚洲一区二区日韩 | 亚洲国产成人精品久久久国产成人一区 | 国产乱码久久久久久一区二区 | 麻豆精品国产91久久久久久 | 欧美日韩在线播放 | 国产在线观看一区二区三区 | 日本成人片在线观看 | 91p在线观看 | 精品国产精品三级精品av网址 | 91美女视频 | 福利久久 | 久久久av| re久久| 一区二区三区播放 | 国产欧美一区二区久久性色99 | 欧美 日韩 国产 一区 | 夜夜草天天草 | 日韩国产一区二区三区 | 能免费看的av | 欧美理伦片在线播放 | 国产高清视频在线观看 | 天天拍天天操 | 国产精品国产精品国产专区不片 | 亚洲高清视频在线 | 日韩精品中文字幕一区二区三区 | 一区二区三区免费 | 久久最新| 求个av网址| 殴美黄色录像 | 欧美极品一区二区 | 久久看精品 | 日本亚洲精品成人欧美一区 | 一区二区av | 国产精品一区二区三区久久久 | 国产一二区免费视频 | 欧美一区二区另类 | 精品国产精品三级精品av网址 | 北条麻妃一区二区三区在线观看 |