html5 --- IDBDatabase創建對象存儲和索引

代碼如下:

<!DOCTYPE html>
<html>
<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title> CRUD操作 </title><style type="text/css">table{width: 830px;border: 1px solid lightgrey;border-collapse: collapse;vertical-align: top;}td{padding: 5px;border:1px solid lightgrey;}tr{background: linear-gradient(to right, #f6f6f6, #fff);}tr:hover{background: linear-gradient(to right, #eee, #f6f6f6);}tbody{text-align:center;}</style>
</head>
<body><form id="bookForm">ISBN: <input id="isbn" name="isbn" type="text" size="40" />書名: <input id="name" name="name" type="text" size="40" /> <p>作者: <input id="author" name="author" type="text" size="40" />價格: <input id="price" name="price" type="number" min="10" max="200" step="0.1" /><p>內容簡介: <input id="content" name="content" type="text" size="80" /><p><button onclick="add();" type="button">添加</button> <p>ISBN下限: <input id="isbnlower" name="isbnlower" type="text" size="30" />ISBN上限: <input id="isbnupper" name="isbnupper" type="text" size="30" /><button onclick="query();" type="button">查詢</button></form>	<table><tr><th width="5%">ISBN</th><th>書名</th><th>內容簡介</th><th width="6%">作者</th><th width="6%">價格</th><th width="7%">操作</th></tr><tbody id="bookTb"></tbody></table><script type="text/javascript">function createDb(event){idb = event.target.result;var storeName="books";if(idb.objectStoreNames.contains(storeName)){idb.deleteObjectStore(storeName);}var opt ={keyPath: "isbn",autoIncrement: false};var store = idb.createObjectStore(storeName, opt);store.createIndex("by_name","name", {unique: true});store.createIndex("by_content", "content");store.createIndex("by_author", "author");store.createIndex("by_price", "price");}var dbName="fkDb";var version = 2;function add(){var request = indexedDB.open(dbName, version);var idb;request.onsuccess = function(event){idb = request.result;var tx = idb.transaction("books", "readwrite");var booksStore = tx.objectStore("books");var book = {isbn: document.querySelector("#isbn").value,name: document.querySelector("#name").value,content: document.querySelector("#content").value,author: document.querySelector("#author").value,price: parseFloat(document.querySelector("#price").value),}var objectStoreRequest = booksStore.add(book);objectStoreRequest.onsuccess = function(event){alert("數據添加成功!");document.querySelector("#bookForm").reset();list();};}request.onerror = function(event){alert("數據庫打開失敗!");}request.onupgradeneeded = createDb;}function list(){var dbName = "fkDb";var request = indexedDB.open(dbName, version);var idb;request.onsuccess = function(event){idb = request.result;// 針對books對象存儲的只讀事務var tx = idb.transaction("books", "readonly");var booksStore = tx.objectStore("books");// 獲取全部圖書var objectGetRequest = booksStore.getAll();objectGetRequest.onsuccess = function(event){var bookTb = document.querySelector("#bookTb");bookTb.innerHTML = "";var books = objectGetRequest.result;for(var i = 0; i < books.length; i ++){var row = bookTb.insertRow(i);var j = 0;for( var prop in books[i]){var cell = row.insertCell(j++);cell.innerHTML = books[i][prop];}var opCell = row.insertCell(5);opCell.innerHTML = "<button onclick='delBook(\"" +books[i]['isbn'] + "\");'>刪除</button>";}};}request.onerror = function(event){alert("數據庫打開失敗!" + event);}request.onupgradeneeded = createDb;}function delBook(key){var dbName = "fkDb";var request = indexedDB.open(dbName, version);var idb;request.onsuccess = function(event){idb = request.result;var tx = idb.transaction("books", "readwrite");var booksStore = tx.objectStore("books");var objectDeleteRequest = booksStore.delete(key);objectDeleteRequest.onsuccess = function(event){alert("圖書刪除成功!");list();};}request.onerror = function(event){alert("數據庫打開失敗!" + event);}request.onupgradeneeded = createDb;}function query(){var dbName = "fkDb";var request = indexedDB.open(dbName, version);var idb;request.onsuccess = function(event){idb = request.result;var tx = idb.transaction("books", "readonly");var booksStore = tx.objectStore("books");var range = IDBKeyRange.bound(document.querySelector("#isbnlower").value,document.querySelector("#isbnupper").value);var objectQueryRequest = booksStore.openCursor(range);var bookTb = document.querySelector("#bookTb");bookTb.innerHTML = "";objectQueryRequest.onsuccess = function(event){var cursor = objectQueryRequest.result;if(cursor){var row = bookTb.insertRow(0);var j = 0;for(var prop in cursor.value){var cell = row.insertCell(j++);cell.innerHTML = cursor.value[prop];}var opCell = row.insertCell(5);opCell.innerHTML = "<button onclick='delBook(\"" +cursor.value['isbn'] + "\");'>刪除</button>";cursor.continue();}};}request.onerror = function(event){alert("數據庫打開失敗!" + event);}request.onupgradeneeded = createDb;}list();</script>
</body>
</html>

效果如下:
在這里插入圖片描述
打開控制臺可以看見在IndexedDB里面創建了一個名為"fkDB"的數據庫,里面有個books
在這里插入圖片描述

參考《瘋狂H5+CSS3+JS講義》(第2版)P545~P559

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

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

相關文章

查詢數據庫 收集 (如某個字段不是中文)

查詢某個字段不為中文的 select * from 表名 where 字段名 REGEXP [\u0391-\uFFE5] 查詢某個字段以數字開頭 select * from 表名 where 字段名 REGEXP [0-9].*轉載于:https://www.cnblogs.com/spicy/p/8038442.html

2019大疆PC軟件開發筆試——開關和燈泡兩個電路板

題目描述: 小A是一名DIY愛好者&#xff0c;經常制作一些有趣的東西。 今天&#xff0c;小A突然想要來做這樣一個東西。小A現在有兩塊同樣大小為nm&#xff0c;有nm塊大小為11小電路板拼成的矩形電路板&#xff0c;假設叫做電路板A和電路板B。電路板A上每個小電路板都是一個開關…

2019高校微信小程序開發大賽獲獎作品——《brain頭腦智序》

目錄 前言 交互流程說明圖 我的任務 登錄授權&#xff08;login&#xff09; 首頁&#xff08;tababr分析&#xff09; 房間準備區&#xff08;preparing&#xff09; 便簽編輯區 最終方案選擇&#xff08;房主權限&#xff09; 會議報告頁面&#xff08;report&#…

前端試題(三)

1. js繼承的7種方式 回顧&#xff1a; 每個構造函數都有一個原型對象&#xff1b;原型對象都包含一個指向構造函數的指針&#xff1b;實例都包含一個指向原型對象的內部指針&#xff1b;一切皆為對象&#xff0c;只要是對象&#xff0c;就會有 proto 屬性&#xff0c;該屬性存…

javascript --- ES6模塊與CommonJS模塊的差異

CommonJS模塊是運行時加載,ES6模塊是編譯時輸出接口 是因為CommonJS加載的是一個對象(module.exports屬性),該對象只有在腳本運行結束時才會生成.而ES6模塊不是對象,它的對外接口只是一種靜態定義,在代碼靜態解析階段就會生成. CommonJS模塊輸出的是一個值的復制&#xff0c;E…

C# ASP 面試題 2017

在博客上看到的&#xff0c;感覺還不錯 https://www.cnblogs.com/renyiqiu/p/6435261.html 轉載于:https://www.cnblogs.com/yangsirc/p/8038555.html

享元模式 - 結構型模式

模式類型&#xff1a; Flyweight 享元模式 - 結構型模式 意圖&#xff1a; The intent of this pattern is to use sharing to support a large number of objects that have part of their internal state in common where the other part of state can vary. 運用共享…

前端試題(四)

1. vue過濾器使用場景 2. v-on綁定多個方法 <p v-on"{click:dbClick,mousemove:MouseClick}"></p>一個事件綁定多個函數&#xff1a; <p click"one(),two()">點擊</p>3. 在菜單結構不確定時&#xff0c;前端如何動態渲染 樹形…

http --- 用于HTTP調試的最小型Perl Web 服務器

下面的程序是個很有用戶的診斷工具,可以用來調試與客戶端和代理的交互情況. 該程序 首先會等待HTTP連接,只有收到請求報文,就會將報文打印在屏幕上,然后等待用戶輸入一條響應報文,并將其回送給客戶端. #! /usr/bin/perl use Socket; use Carp; use FileHandle;# (1) use prot …

Mysql - 安裝與配置

1、下載安裝包 > https://www.mysql.com/downloads/ 2、雙擊安裝&#xff0c;點擊Install MySQL Products > 3、Skip 打鉤&#xff0c;Next下一步 > 4、選擇Server only&#xff1a;只選擇安裝服務端&#xff0c;根據個人喜好更改安裝路徑和數據保存路徑…

4084:拓撲排序

題目鏈接&#xff1a;http://bailian.openjudge.cn/practice/4084/ 總時間限制: 1000ms 內存限制: 65536kB描述給出一個圖的結構&#xff0c;輸出其拓撲排序序列&#xff0c;要求在同等條件下&#xff0c;編號小的頂點在前。 輸入若干行整數&#xff0c;第一行有2個數&#xff…

廖雪峰git教程學習

廖雪峰git教程 git – Linus在2周內用c寫的 1.1 基本概念 版本控制系統&#xff0c;追蹤文本文件的改動&#xff0c;文件、視頻等二進制文件則不可追蹤&#xff08;微軟的word也是二進制文件&#xff09;HEAD 指向當前分支&#xff0c;表示當前版本&#xff08;最新的提交&am…

操作系統 --- 進程和管程的不同

1.進程定義的是私有數據結構PCB,管程定義的是公共數據結構,如消息隊列等; 2.進程是由順序程序執行有關操作,而管程主要是進行同步操作和初始化操作; 3.設置進程的目的在于實現系統的并發行,而管程的設置則是解決共享資源的互斥使用問題; 4.進程通過調用管程中的過程對共享數據結…

JCO 自定義DestinationDataProvider

要讓JAVA程序能訪問SAP系統&#xff0c;一般通過SAP JCO接口進行通訊&#xff0c;在獲取到SAP的連接時需求提供一些連接參數&#xff0c;這些參數在最新的 JCO 3.0 中需要被保存到一個帶有擴展名.jcoDestination的文件中&#xff0c;這個文件同時被保存在應用程序的安裝目錄中。…

android BLE Peripheral 手機模擬設備發出BLE廣播 BluetoothLeAdvertiser

android 從4.3系統開始可以連接BLE設備&#xff0c;這個大家都知道了。iOS是從7.0版本開始支持BLE。android 進入5.0時代時&#xff0c;開放了一個新功能&#xff0c;手機可以模擬設備發出BLE廣播&#xff0c; 這個新功能其實是 對標于 iOS系統的手機模擬iBeacon設備。先介紹一…

前端后臺管理系統梳理

再梳理一遍 一、商品后臺管理系統 1. 功能 1.1 服務端情況 開啟了CORS跨域支持需要授權的 API &#xff0c;必須在請求頭中使用 Authorization 字段提供token 令牌&#xff08;axios攔截器&#xff09;baseUrl&#xff0c;接口地址&#xff1a;http://localhost:8888/api/…

操作系統 --- 使用套接字進行網絡通信

一個套接字就是一個通信標識類型的數據結構,包含了通信目的的地址、通信使用的端口號、通信網絡的傳輸協議、進程所在的網絡地址,以及針對客戶或服務器程序提供的不同系統調用等,是進程通信和網絡通信的基本構件。套接字是為客戶/服務器模型而設計的,通常分為以下兩類: 1.基于…

構造器執行順序

轉載于:https://www.cnblogs.com/a6948076/p/8045801.html

Java08-java語法基礎(七)構造方法

Java08-java語法基礎&#xff08;七&#xff09;構造方法 一、構造方法 1、什么是構造方法&#xff1f; 構造方法&#xff08;類方法&#xff09;是一個方法名和類名相容的特殊的成員方法。 2、構造方法的作用&#xff1f; 當使用new關鍵字創建一個對象時&#xff0c;為新建對象…

安裝mysql8.0.20,報錯“找不到VCRUNTIME140_1.dll”

寫在最前&#xff0c;指令集合 以管理員身份運行cmd mysql -uroot -p 【進入】mysql mysql > exit 【退出】 net stop mysql 【暫停】 net start mysql 【啟動】 mysql -u root -p&#xff08;命令后輸入臨時密碼&#xff0c;進入mysql&#xff09; ALTER USER USER() …