博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
javascript 调用 IndexedDb示例
阅读量:5289 次
发布时间:2019-06-14

本文共 3084 字,大约阅读时间需要 10 分钟。

一个简单的Todolist

html

todo.html

        candyDatabase sample              

     

    javascript代码

    todo.js
    /** * @author Scott * */var indexedDB = window.indexedDB || window.webkitIndexedDB || window.mozIndexedDB;if ('webkitIndexedDB' in window) {    window.IDBTransaction = window.webkitIDBTransaction;    window.IDBKeyRange = window.webkitIDBKeyRange;}candyDb = {};candyDb.db = null;candyDb.onerror = function(e) {    console.log(e);};candyDb.open = function() {    var request = indexedDB.open("candyDb", '202');    request.onsuccess = function(e) {        candyDb.db = this.result;        candyDb.getAllTodoItems();    };    request.onupgradeneeded = function(evt) {        candyDb.db = this.result;        if (candyDb.db.objectStoreNames.contains("todo")) {            candyDb.db.deleteObjectStore("todo");        }        var store = candyDb.db.createObjectStore("todo", {            keyPath : "id"        });        console.log("upgraded...")    };    request.onerror = candyDb.onerror;}candyDb.addTodo = function(todoText) {    var db = candyDb.db;    var trans = db.transaction(["todo"], "readwrite");    var store = trans.objectStore("todo");    var data = {        "text" : todoText,        "priority" : 0,        "id" : new Date().getTime()    };    var request = store.put(data);    request.onsuccess = function(e) {        candyDb.getAllTodoItems();    };    request.onerror = function(e) {        console.log("Error Adding: ", e);    };};candyDb.deleteTodo = function(id) {    var db = candyDb.db;    var trans = db.transaction(["todo"], "readwrite");    var store = trans.objectStore("todo");    var request = store.delete(id);    request.onsuccess = function(e) {        candyDb.getAllTodoItems();    };    request.onerror = function(e) {        console.log("Error Adding: ", e);    };};candyDb.getAllTodoItems = function() {    var todos = document.getElementById("todoItems");    todos.innerHTML = "";    var db = candyDb.db;    var trans = db.transaction(["todo"], "readwrite");    var store = trans.objectStore("todo");    var keyRange = IDBKeyRange.lowerBound(0);    var cursorRequest = store.openCursor(keyRange);    cursorRequest.onsuccess = function(e) {        var result = e.target.result;        if (!!result == false)            return;        renderTodo(result.value);        result.continue();    };    cursorRequest.onerror = candyDb.onerror;};function renderTodo(row) {    var todos = document.getElementById("todolist");    var li = document.createElement("li");    var a_del = document.createElement("a");    var txt = document.createTextNode(row.text);    a_del.addEventListener("click", function() {        candyDb.deleteTodo(row.id);    }, false);    a_del.textContent = " [delete]";    li.appendChild(txt);    li.appendChild(a_del);    todos.appendChild(li)}function addTodo() {    var todo = document.getElementById("tbx_todo");    candyDb.addTodo(todo.value);    todo.value = "";}function init() {    candyDb.open();}window.addEventListener("DOMContentLoaded", init, false);

     

     

     

     

     

     

     

    转载于:https://www.cnblogs.com/scottgu/archive/2013/05/19/3087762.html

    你可能感兴趣的文章
    队列与生产者消费者模型
    查看>>
    面向对象与网络编程的总结
    查看>>
    第十五章、线程之协程
    查看>>
    第十五章、python中的进程操作-开启多进程
    查看>>
    抢票小程序
    查看>>
    第十六章、初识数据库
    查看>>
    第十五章、并发编程之线程
    查看>>
    第十六章、浅识数据库
    查看>>
    第十五章、并发编程之守护线程
    查看>>
    第十六章、数据库之多表关系
    查看>>
    第十五章、线程之queue模块的各种队列
    查看>>
    Mysql总结
    查看>>
    第十五章、线程池和进程池
    查看>>
    第十六章、单表查询、多表查询
    查看>>
    <一> idea+gradle+springboot创建项目
    查看>>
    解决 "Could not autowire. No beans of 'SationMapper' type found" 的问题
    查看>>
    P3383 【模板】线性筛素数
    查看>>
    P1021 邮票面值设计
    查看>>
    #574. 桂林的文件
    查看>>
    #554. 正则表达式
    查看>>