HTML5本地存儲

什么是Web Storage

Web Storage是HTML5里面引入的一個類似于cookie的本地存儲功能,可以用于客戶端的本地存儲,其相對于cookie來說有以下幾點優勢:

  1. 存儲空間大:cookie只有4KB的存儲空間,而Web Storage在官方建議中為每個網站5M。

  2. 可選擇性強:Web Storage分為兩種:sessionStoragelocalStorage

Web Storage的使用方法

在使用上,session Storagelocal Storage大同小異,只是session Storage是將數據臨時存儲在session中,瀏覽器關閉,數據隨之消失。而local Storage則是將數據存儲在本地,理論上來說數據永遠不會消失,除非人為刪除。

API:

  • 保存數據 localStorage.setItem( key, value ); sessionStorage.setItem( key, value );

  • 讀取數據 localStorage.getItem( key ); sessionStorage.getItem( key );

  • 刪除單個數據localStorage.removeItem( key ); sessionStorage.removeItem( key );

  • 刪除全部數據localStorage.clear( ); sessionStorage.clear( );

  • 獲取索引的keylocalStorage.key( index ); sessionStorage.key( index );

注意:Web Storage的API只能操作字符串


在使用Web Storage之前,我們需要注意以下幾點:

  1. 僅支持支持IE8及以上版本

  2. 由于只能對字符串類型數據進行操作,所以對一些JSON對象需要進行轉換

  3. 因為是明文存儲,所以毫無隱私性可言,絕對不能用于存儲重要信息

  4. 會是瀏覽器加載速度在一定程度上變慢

  5. 無法被爬蟲程序爬取

  6. 使用Web Storage之前,請加上以下代碼,對瀏覽器對Web Storage的支持性進行判斷

    if(window.localStorage){//或者window.sessionStorage     alert("瀏覽器支持localStorage") //主邏輯業務 }else{ alert("瀏覽不支持localStorage") //替代方法 } 

我們來寫一個學生管理小程序用于演示Web Storage的基本用法

簡單的html頁面先準備好

    <div style="border: 2px dashed #ccc;width:320px;float: left;">     <label for="name">學生姓名:</label> <input type="text" id="name" name="name"/> <br/> <label for="sex">性別:</label> <input type="text" id="sex" name="sex"/> <br/> <label for="num">學號:</label> <input type="text" id="num" name="num"/> <br/> <label for="add">家庭住址:</label> <input type="text" id="add" name="add"/> <br/> <label for="tel">電話號碼:</label> <input type="text" id="tel" name="tel"/> <br/> <input type="button" onclick="save()" value="提交信息"/> <hr/> <input type="button" onclick="loadAll()" value="查看所有"/> <hr/> <label for="search_name">輸入姓名:</label> <input type="text" id="search_name" name="search_name"/> <br/> <input type="button" onclick="search()" value="查詢"/> <hr/> <label for="del_name">輸入姓名:</label> <input type="text" id="del_name" name="del_name"/> <br/> <input type="button" onclick="del()" value="刪除"/> <hr/> </div> <br/> <div id="list"></div> <div id="tato"></div>

在這個程序里面我們將實現增刪查的基本功能,修改數據的功能相信大家看完后自己就能寫出來。

接下來開始寫方法:

存儲

//利用localStorage存儲數據
function save() { var contact = new Object(); var Name = document.getElementById("name").value; var Sex = document.getElementById("sex").value; var Num = document.getElementById("num").value; var Add = document.getElementById("add").value; var Tel = document.getElementById("tel").value; if(JTrim(Name) != "" && JTrim(Sex) != "" && JTrim(Num) != "" && JTrim(Add) != "" && JTrim(Tel) != "") { contact.name = Name; contact.sex = Sex; contact.num = Num; contact.add = Add; contact.tel = Tel; var str = JSON.stringify(contact);//對JSON對象進行處理,用于從一個對象解析出字符串 if(window.localStorage) { localStorage.setItem(contact.name,str); } else { alert("您暫時還無法使用本功能"); return; } } else { alert("請輸入內容"); } }

其中用到了Trim()這個方法,用于判斷輸入是否為空

function JTrim(s) { return s.replace(/(^\s*)|(\s*$)/g, ""); } 

展示所有信息

function loadAll() { var resource = document.getElementById("list"); if(window.localStorage) { var result = "<table border = '1'>"; result += "<tr><td>姓名</td><td>性別</td><td>學號</td><td>家庭住址</td><td>電話號碼</td></tr>"; for(var i = 0;i < localStorage.length; i++) { var Name = localStorage.key(i);//用于得到索引的key,在這個程序里,key為name var str = localStorage.getItem(Name); var contact = JSON.parse(str);//對JSON對象進行處理,用于從一個字符串中解析出JSON對象 result += "<tr><td>"+contact.name+"</td><td>"+contact.sex+"</td><td>"+contact.num+"</td><td>"+contact.add+"</td><td>"+contact.tel+"</td></tr>"; } result += "</table>"; resource.innerHTML = result; } else { alert("您暫時還無法使用本功能"); return; } }

查詢

function search() { var resource = document.getElementById("tato"); var search_name = document.getElementById("search_name").value; if(window.localStorage) { var str = localStorage.getItem(search_name); if(str != null) { var result = "<table border = '1'>"; result += "<tr><td>姓名</td><td>性別</td><td>學號</td><td>家庭住址</td><td>電話號碼</td></tr>"; var contact = JSON.parse(str); result += "<tr><td>"+contact.name+"</td><td>"+contact.sex+"</td><td>"+contact.num+"</td><td>"+contact.add+"</td><td>"+contact.tel+"</td></tr>"; result += "</table>"; resource.innerHTML = result; } else { alert("系統無此人"); return; } } else { alert("您暫時還無法使用本功能"); return; } }

刪除

function del() { var del_name = document.getElementById("del_name").value; if(window.localStorage) { var result = localStorage.getItem(del_name); localStorage.removeItem(del_name); if(result != null) { alert("刪除成功"); } else { alert("系統無此人"); return; } } else { alert("您暫時還無法使用本功能"); return; } }

在這里如果想對所有數據做刪除處理則只需將localStorage.removeItem();換成localStorage.clear();即可

轉載于:https://www.cnblogs.com/huangshikun/p/6649138.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/371179.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/371179.shtml
英文地址,請注明出處:http://en.pswp.cn/news/371179.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

番石榴秒表

番石榴的秒表是番石榴第10版的另一個新番石榴類&#xff08;作為Optional &#xff0c;這是另一篇近期文章的主題&#xff09;。 顧名思義&#xff0c;這個簡單的類提供了一種方便地測量兩個代碼點之間經過的時間的方法。 與使用System.currentTimeMillis&#xff08;&#xff…

CF 839 E-最大團

CF 839 E Soltion: 就是怎么求最大團的問題: 以下是\(O(7000\times n^2)\)的做法 求一個最大團,然后將所有的藥水平均分配,到最大團的所有點上,計算答案. #include<iostream> #include<cstdio> #include<cstring> #include<cmath> #include<algorit…

sse java_SSE詳解

SSE(Server-Sent Events):通俗解釋起來就是一種基于HTTP的&#xff0c;以流的形式由服務端持續向客戶端發送數據的技術應用場景由于HTTP是無狀態的傳輸協議,每次請求需由客戶端向服務端建立連接,HTTPS還需要交換秘鑰&#xff0c;所以一次請求,建立連接的過程占了很大比例在http…

520. Detect Capital

題目&#xff1a; Given a word, you need to judge whether the usage of capitals in it is right or not. We define the usage of capitals in a word to be right when one of the following cases holds: All letters in this word are capitals, like "USA".A…

盒模型的屬性丶display顯示丶浮動

一丶盒模型的屬性(重要) 1.padding padding是標準文檔流,父子之間調整位置 <!DOCTYPE html><html><head><meta charset"UTF-8"><title>padding</title><style>*{padding: 0;margin: 0;}.box{width: 200px;height: 200px;b…

MapReduce:通過數據密集型文本處理

自上次發布以來已經有一段時間了&#xff0c;因為我一直在忙于Coursera提供的一些課程。 有一些非常有趣的產品&#xff0c;值得一看。 前一段時間&#xff0c;我購買了Jimmy Lin和Chris Dyer的MapReduce數據密集型處理程序 。 本書以偽代碼格式介紹了幾種關鍵的MapReduce算法。…

ubuntu(deepin)安裝apache2并支持php7.0

linux虛擬機下用于開發環境測試&#xff0c;安裝的apache和php7.0&#xff0c;但是簡單安裝完兩者后apache并不能解析php&#xff0c;原因是確實apache的php擴展。 # 首先安裝apache sudo apt-get install apache2 # 然后安裝php7.0 sudo apt-get install php7.0 # 一般執行完這…

java applet 換行_Java復習題

一、選擇題1.有Java語句如下&#xff0c;則說法正確的是()A.此語句是錯誤的B. a.length的值為5C. b.length的值為5D. a.length和b.length的值都為52.整數除法中&#xff0c;如果除數為0&#xff0c;則將導致的異常是( B )A. NullPointerExceptionB. ArithmeticExceptionC. Arra…

解決:MVC對象轉json包含\r \n

項目中對象轉json字符串時&#xff0c;如下&#xff1a;JsonSerializerSettings jsetting new JsonSerializerSettings(); jsetting.DefaultValueHandling DefaultValueHandling.Ignore; return JsonConvert.SerializeObject(resultMoldels, Formatting.Indented, jsetting);…

CSS 小結筆記之滑動門技術

所謂的滑動門技術&#xff0c;就是指盒子背景能夠自動拉伸以適應不同長度的文本。即當文字增多時&#xff0c;背景看起來也會變長。 大多數應用于導航欄之中&#xff0c;如微信導航欄: 具體實現方法如下&#xff1a; 1、首先每一塊文本內容是由a標簽與span標簽組成 <a hr…

使用API??身份驗證的Spring Security

背景 盡管有許多博客文章詳細介紹了如何使用Spring Security&#xff0c;但是當問題域位于標準LDAP或數據庫身份驗證之外時&#xff0c;我仍然經常發現配置挑戰。 在本文中&#xff0c;我將介紹一些針對Spring Security的簡單自定義&#xff0c;使其能夠與基于REST的API調用一起…

java nlpir_4-NLPIR漢語分詞系統-JAVA

好吧&#xff0c;之前用的是舊版的&#xff0c;現在出了個新版的&#xff0c;優先選擇用新版的哈。從官網下載相應的開發包&#xff0c;然后主要需要找到這幾個東西添加到項目工程里面&#xff0c;1.Data文件夾 2.NLPIR_JNI.DLL 3.NLPIR.jar 4.nlpir.properties添加完那些東西后…

淺析C語言中assert的用法(轉)

原文地址&#xff1a;http://www.jb51.net/article/39685.htm 以下是對C語言中assert的使用方法進行了介紹&#xff0c;需要的朋友可以參考下。 assert宏的原型定義在<assert.h>中&#xff0c;其作用是如果它的條件返回錯誤&#xff0c;則終止程序執行&#xff0c;原型定…

hihocoder offer收割編程練習賽12 D 尋找最大值

思路&#xff1a; 可能數據太水了&#xff0c;隨便亂搞就過了。 實現&#xff1a; 1 #include <iostream>2 #include <cstdio>3 #include <algorithm>4 using namespace std;5 typedef long long ll;6 7 int a[100005], n;8 9 int main() 10 { 11 int t;…

vue error:The template root requires exactly one element.

error:[vue/valid-template-root] The template root requires exactly one element. 原因&#xff1a; 因為vue的模版中只有能一個根節點&#xff0c;所以在<template>中插入第二個元素就會報錯 解決方案&#xff1a; 將<template>中的元素先用一個<div>…

測試驅動陷阱,第2部分

單元測試中單元的故事 在本文的上半部分 &#xff0c;您可能會看到一些不好但很流行的測試示例。 但是我不是一個專業評論家&#xff08;也被稱為“巨魔”或“仇恨者”&#xff09;&#xff0c;沒有任何建設性的話就抱怨。 多年的TDD教給我的不僅僅是事情會變得多么糟糕。 有許…

java 代碼 設置環境變量_Java 配置環境變量教程

【聲明】歡迎轉載&#xff0c;但請保留文章原始出處→_→【正文】1、安裝JDK開發環境開始安裝JDK&#xff1a;修改安裝目錄如下&#xff1a;確定之后&#xff0c;單擊“下一步”。注&#xff1a;當提示安裝JRE時&#xff0c;可以選擇不要安裝。2、配置環境變量&#xff1a;對于…

組合數據類型練習,英文詞頻統計實例上(2017.9.22)

字典實例&#xff1a;建立學生學號成績字典&#xff0c;做增刪改查遍歷操作。 sno[33號,34號,35號,36號] grade[100,90,80,120] d{33號:100,34號:90,35號:80,36號:120} print(d) print(每個學號對應分數:,d.items()) print(彈出35號的分數:,d.pop(35號)) print(獲取學號:,d.key…

java 代碼中設置 臨時 環境變量

System.setProperty("hadoop.home.dir", "D:\\software\\software_install\\dev_install\\hadoop-2.4.1"); 轉載于:https://www.cnblogs.com/zychengzhiit1/p/6662376.html

什么是快速開發框架

什么是快速開發框架 前言 做為一個程序員&#xff0c;在開發的過程中會發現&#xff0c;有框架同無框架&#xff0c;做起事來是完全不同的概念&#xff0c;關系到開發的效率、程序的健壯、性能、團隊協作、后續功能維護、擴展......等方方面面的事情。很多朋友在學習搭建自己…