调用addData()方法报错;

调用addData()方法报错;

<script type="text/javascript">

// 主要是js对象承储数据;

var db=window.indexedDB;

var request,version=2;

dbName="testDB";

osName="os1";

function create(){

request=db.open(dbName,version);

    request.onsuccess=function () {

db=request.result;

console.log("success!")

                };

                request.onerror=function(e){

        console.log(e.currentTarget.error.message)

};

request.onupgradeneeded=function(){

    var store=null;

db=request.result;

if(!db.objectStoreNames.contains(osName)){

                    db.createObjectStore(osName,{autoIncrement:true})

}

console.log("upgradeneeded!");

}


        }

        create();

var data=[{

            name:"小恶魔",

            id:2,

            hp:9,

            sex:"男"

        }];

        function addData(){

            var transaction=db.transaction(osName,"readwrite");

            var store=transaction.objectStore(osName);

            data.map(function(o){

                store.add(o);

            })

        }

        addData();

</script>


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕星星 2019-01-29 09:40:22

你好,不应该在代码中调用addData()方法,因为onupgradeneeded和onsuccess方法是异步执行的,需要等待一定的时间,所以会先执行下面的代码,下面addData调用的时候,db数据库还没有成功,所以会报错。建议在控制台中调用:

http://img1.sycdn.imooc.com//climg/5c4faee70001ab2b03320089.jpg

http://img1.sycdn.imooc.com//climg/5c4faef80001f2ca15780385.jpg

自己可以测试下,祝学习愉快!

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
组件化思想开发电商网页 18版
  • 参与学习           人
  • 提交作业       467    份
  • 解答问题       4826    个

本路径带你通过系统学习HTML5、JavaScript、jQuery的进阶知识,不仅如此,还会学习如何利用组件化的思想来开发网页,知识点+案例,使得所学可以更好的得到实践。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师