indexedDB的基本使用

html代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link rel="stylesheet" href="style.css">
</head>
<body>

<!--创建一个容器-->
<div class="addNoteView">
    <input type="text" placeholder="标题">
    <textarea name="" id="" cols="30" rows="10" placeholder="正文"></textarea>
    <div class="addButton">保存</div>
</div>
<!--<div class="showNote">-->
    <!--<div class="noteListView"></div>-->
    <!--<div class="noteContentView"></div>-->
<!--</div>-->

<div class="noteList">
    <h2>日记列表</h2>
</div>

<script src="app.js"></script>
</body>
</html>

style.css代码:

*{
    margin: 0;
    padding: 0;
}

.addNoteView input,.addNoteView textarea{
    display:block ;
    padding: 10px 30px;
}

.addNoteView{
    width: 80%;
    margin: 0 auto;
}
.addNoteView input{
    height: 44px;
    width: 100%;
}
.addNoteView textarea{
    height: 200px;
    width: 100%;
}
.addButton{
    width: 50%;
    margin: 0 auto;
    height: 35px;
    background-color: #3e3aff;
    border: none;
    margin-top: 100px;
    text-align: center;
    line-height: 35px;
}
.noteList{
    width: 80%;
    margin:0 auto;
    height:200px;
    border: 1px solid #000;
    margin-top: 20px;
}
.noteList h2{
    text-align: center;
}

app.js代码:


(function () {

    //创建数据库对象
    var database=null;
    // 创建、打开数据库
    function openDB() {
        // open(数据库名字,版本号)
        var request=indexedDB.open("noteDB",4);
        // 错误提示
        request.onerror=function (error) {
            console.log(error)
        };
        // 数据库打开成功
        request.onsuccess=function () {
            console.log("打开数据库成功");
            // 定义数据库对象
            database=this.result;
        };
        // 更新数据库 只在数据库版本号不相同时调用
        request.onupgradeneeded=function () {
            // 在建表的时候 不需要每一次都创建

            console.log("更新数据库成功",this);
            // 获得到数据库对象IDBDatabase
            var db=this.result;
            // 设置表名
            var tableName="note";
            // contains()判断数据库里是否有note这个表名
            if(!db.objectStoreNames.contains(tableName)){
                // 建表
                var objectStore=db.createObjectStore(tableName,{keyPath:"date"});
                // 创建表里面的字段 需要 至少传入两个参数
                // createIndex(字段的名字,该字段对应的内容)
                objectStore.createIndex("title","title");
                objectStore.createIndex("content","content");
                objectStore.createIndex("date","date");
            }
        };
    }

    // 添加数据的方法
    function addData(info) {
        // 获得事务得对象
        var transaction=database.transaction(["note"],"readwrite");
        // 存放某一种类型的容器
        var objectStore=transaction.objectStore("note");
        // 添加数据
        objectStore.add(info);

    }
    // 获得数据方法
    function getData(callback) {
        // 获得事务得对象
        var transaction=database.transaction(["note"],"readwrite");
        // 存放某一种类型的容器
        var objectStore=transaction.objectStore("note");
        // 获取数据方法(此处只通过keypath获取对应的一条数据)
         var getData=objectStore.get(1502184923387);
        // 把结果放入回调函数中 方便使用
        callback(getData);
    }
    // 删除数据方法
    function deleteData() {
        // 获得事务得对象
        var transaction=database.transaction(["note"],"readwrite");
        // 存放某一种类型的容器
        var objectStore=transaction.objectStore("note");
        // 删除数据(此处只通过keypath删除对应的一条数据)
        objectStore.delete(1502184923387);
    }

    // 把输入的内容存储到浏览器中的方法
    function loadView() {
        var titleInput=document.querySelector(".addNoteView input");
        var contentInput=document.querySelector(".addNoteView textarea");
        var saveButton=document.querySelector(".addButton");
        saveButton.onclick=function () {
            var title=titleInput.value;
            var content=contentInput.value;
            var timeStamp=new Date().getTime();
            // 调用添加数据方法,传入字面量对象
            addData({
                title:title,
                content:content,
                date:timeStamp
            });
            // 调用获取数据方法,获取数据
            getData(function (data) {
                console.log(data);
            });
            deleteData();
        }

    }

    // 初始化函数
    function init() {
        // 判断如果浏览器不支持indexedDB则跳出不执行
        if(!indexedDB){
            return;
        }


        openDB();
        loadView();
    }

    init();

})();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值