UNPKG

ma-dom

Version:

封装的一些常用的DOM操作函数和常用的js函数

173 lines (156 loc) 9.6 kB
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>indexdb</title> </head> <body> <ul id="todoItems"> <li>12</li> <li>1</li> <li>1</li> <li>4156</li> <li>45</li> </ul> <div id="todo">sdad</div> <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6ODJFMEYwNEY1MDI5MTFFOEIzMEY5QkRGQjVDNTc3OEMiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6ODJFMEYwNTA1MDI5MTFFOEIzMEY5QkRGQjVDNTc3OEMiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo4MkUwRjA0RDUwMjkxMUU4QjMwRjlCREZCNUM1Nzc4QyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo4MkUwRjA0RTUwMjkxMUU4QjMwRjlCREZCNUM1Nzc4QyIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PqXimwsAAAH+UExURWGs/mSx/2Gt/2Wz/2Ow/2Sy/2e2/2Ku/2e3/2a1/2Kt/2Gs/2W0/2Ov/2a0/2i4/2Cq+2Wy/2e4/2i3/2a2/2i5/0uFw0uFxUN2rlGP0lme5Wm5/0N3r2Gs+jRdiWCq/D5uoFqg51+p91me5EuGxkh/vFSV3E+MzT1toF+o+FKR11COzTNbh2Kv/2Ku+1ui712l70qDwUqDwk+My1SV2T9wplSU21uh7lGQ0mKu/UuFwD1rnDxpnDxrnlGPzzlllF6m9lKQ1VGQ1UqCv2Cr/F2m8EiBvkV7tEd+ulyj60J0rGOw/VWW3Fmf6lOT1TFXgVCN0GKt+Fmd6EmCvFib5kV7s1yi7j5uokmDwE+LzT5tnmm6/1ic5lyi7F6m8WGs+Ud+u2Gt+lCP0VCO0EmBvlCO0V2k81ui6jtomFCO0j9vpVWW3TJZg0yHx1aY3kBxpGOv/UJ2rFWX22Ov/E+Lzj1tomGt/l6m8FGP012l80+MykN2r1md5EqDvkyGwz5uo0mCvztomlme6UmCwFyi61me51ui61aZ4lid51WW3lic52Ku/mKu/Fqf6luh7EuFxj5uoVqf62e1/1WX31OT2Vyj7Fea5EmBv0iAu1mf50Fzp2Ox/1uh6UByqWOu/0J2rUR4skiAvGKt+2Gt+Ud9t0qEwzdhkFqg6lid6AAAAAD6VTgAAACqdFJOU/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8AtQnI1QAAA1pJREFUeNqkl2V72zAQgCXLki1DnKQpd+V27cpjZmZmZmZmZmZmyr+c7LQNCGI/u2+2dK9O0ukApP9TgHTk2Pa/8bih625dfHfl1aiAhZBQ6GqaDQDQNAMiM7b6S2hA2TgTaqBAbJc6I0MBRjiOBYRiQ7OqKOB9wrGBXPSSDjXgY9ICakEJFQBBUFQM75IMsKraAGGENIkBbz0bhBNnjwjwzQOhBb3iAXNKQARBDRygFEQSuqMAgKxoAJCclAe4DSPqA83JBXwSHoCtI5OJg4XWwVs5ANEGbEQ2Du9MpztvTDOILiCYWcBJxA+7dGiOu7wzNd4ltwwCYgIDlxU8Gof3UvNUP+AXD4C9GbW2NU+v9BMgRzAa+wHdnHnG0UCn1yS+6GMzNpwWnYIPMDkDUr7C5FI382Uhbwr77nMKp+GXAeAe5wPwAJu/LudqrWqfmCi0VIMBgI9/Kc633Tj7s4i7zGQA4Hbgg9N3IbfdFu6wnT4GqKBc4LvOZrsWB5jILeWOYYClmAOsZLOtfIDHfl3gltJ0Blj+ufC31c1m47yTMfxd3eEdGjFAHf8O3Nej7rt5+hv8Yz3BuzNhgLgmCP80V9+iuq//VeDxZAlIPyjy8G0KfwaeSAUxF9WAtK7W1+kKRczCzcUAeHNG/XJKGFVweRHAh02B+pGHMXHOwLNBeqYm17cW+OrrhxBZyiK14lsYdNWtTP+4J894/jWeUwR0wvTnqjIGZYCz8ohuYwYYjRWx3XflGUg+7gOGKQBGu/A5hwfgfT5AXtMEgOkKgHnNB/S40jNADPBCcUY0iEjzn8tNfMMinsLNn2Wickw+BeoJVa3TlgG0yndpxBQGBLEzSG3Se4BTW1rlJjhPBgCPJA/KvcgGK2R+Ysey6T0puaXfQVKUPBZangXsEq9C9weRRAwwfuSWOEj44KzvbOiwZH9efpElLhIt1GNIrmGg/hgArCXig3Iljx2eKawTq1CUGq3L4UvdmxEIBhUV2/NCE7qouNxvIOH0IZI1HB3JMAUvnSXvWCY4uHjDcl7ZdDWZhjpRbiva9smzCCuwnfEhGs/6RhOL3F8nsCxs67sYmsjVssFWMzChf+ojNd9lj3VECMI4kSJUb6/cG7l79+VgzaHmnbXKKf8EGACGKTvIMbSK2AAAAABJRU5ErkJggg==" alt=""> <script> var dbName = "马鹏达"; //数据库名称 var dbVersion = 1; //数据库版本 var tablename = "test"; //表名 //定义一个IndexDB方法集合对象 var H5AppDB = {}; //实例化IndexDB数据上下文,这边根据浏览器类型来做选择 var indexedDB = window.indexedDB || window.webkitIndexedDB ||window.mozIndexedDB; H5AppDB.indexedDB = {}; H5AppDB.indexedDB.db = null; //错误信息,打印日志 H5AppDB.indexedDB.onerror = function (e) { console.err(e); }; H5AppDB.indexedDB.open = function() { //初始IndexDB var request = indexedDB.open(dbName, dbVersion); request.onsuccess = function(e) { // Old api: var v = "2-beta"; console.log("成功打开数据库: " + dbName); H5AppDB.indexedDB.db = e.target.result; var db = H5AppDB.indexedDB.db; if (db.setVersion) { console.log("旧版本号: " + db.setVersion); if (db.version != dbVersion) { var req = db.setVersion(dbVersion); req.onsuccess = function() { if (db.objectStoreNames.contains(tablename)) { db.deleteObjectStore(tablename); } var store = db.createObjectStore(tablename, { keyPath: "timeStamp" }); //keyPath:主键,唯一性 var trans = req.result; trans.oncomplete = function(e) { console.log("== 传输完成 =="); H5AppDB.indexedDB.getAllTodoItems(); } }; } else { H5AppDB.indexedDB.getAllTodoItems(); } } else { H5AppDB.indexedDB.getAllTodoItems(); } } // 如果版本不一致,执行版本升级的操作 request.onupgradeneeded = function(e) { var db = e.target.result; var store = db.createObjectStore('Users', {keyPath: 'userId', autoIncrement: false}); console.log('创建对象仓库成功'); H5AppDB.indexedDB.db = e.target.result; var db = H5AppDB.indexedDB.db; if (db.objectStoreNames.contains(tablename)) { db.deleteObjectStore(tablename); } var store = db.createObjectStore(tablename, { keyPath: "timeStamp" }); //NoSQL类型数据库中必须的主键,唯一性 var transaction = e.target.transaction; transaction.oncomplete =function(event) { H5AppDB.indexedDB.getAllTodoItems(); } } request.onfailure = H5AppDB.indexedDB.onerror; }; H5AppDB.indexedDB.getAllTodoItems = function() { var todos = document.getElementById("todoItems"); todos.innerHTML = ""; var db = H5AppDB.indexedDB.db; var trans = db.transaction([tablename], "readwrite"); //通过事物开启对象 var store = trans.objectStore(tablename); //获取到对象的值 // Get everything in the store; var keyRange = IDBKeyRange.lowerBound(0); var cursorRequest = store.openCursor(keyRange); //开启索引为0的表 cursorRequest.onsuccess = function(e) { var result = e.target.result; if ( !! result == false) return; renderTodo(result.value); result.continue(); //这边执行轮询读取 }; cursorRequest.onerror = H5AppDB.indexedDB.onerror; }; //绑定数据 function renderTodo(row) { var todos = document.getElementById("todoItems"); var li = document.createElement("li"); var a = document.createElement("a"); var t = document.createTextNode(row.text); a.addEventListener("click", function() { H5AppDB.indexedDB.deleteTodo(row.timeStamp); }, false); a.textContent = " [Delete]"; li.appendChild(t); li.appendChild(a); todos.appendChild(li); }; H5AppDB.indexedDB.addTodo = function(todoText) { var db = H5AppDB.indexedDB.db; var trans = db.transaction([tablename], "readwrite"); var store = trans.objectStore(tablename); var newArray = new Array("键1", "值1"); //数据以对象形式保存,体现NoSQL类型数据库的灵活性 var data = { "text": todoText, "timeStamp": new Date().getTime(), "obj": newArray }; var request = store.put(data); //保存数据 request.onsuccess = function(e) { H5AppDB.indexedDB.getAllTodoItems(); }; request.onerror = function(e) { console.log("添加出错: ", e); }; }; function addTodo() { var todo = document.getElementById("todo"); H5AppDB.indexedDB.addTodo(todo.value); todo.value = ""; } H5AppDB.indexedDB.deleteTodo = function(id) { var db = H5AppDB.indexedDB.db; var trans = db.transaction([tablename], "readwrite"); var store = trans.objectStore(tablename); var request = store.delete(id);//根据主键来删除 request.onsuccess = function(e) { H5AppDB.indexedDB.getAllTodoItems(); alert("删除成功"); }; request.onerror = function(e) { console.log("删除出错: ", e); }; }; H5AppDB.indexedDB.open(); </script> </body> </html>