db.transaction is not a function
<!DOCTYPE html> <html> <head> <title>indexedDB</title> </head> <body> <script type="text/javascript"> var db=window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB; var request,result,version=2, dbName="testDB", osName="os1"; function createDB(){ request=db.open(dbName,version); request.onsuccess=function(){ db=request.result; } request.onerror=function(e){ console.log(e.currentTarget.errormessage); } request.onupgradeneeded=function(){ db=request.result; console.log('upgradeneeded'); if(!db.objectStoreNames.contains(osName)){ db.createObjectStore(osName,{autoIncrement:true}); } } } createDB(); //存入数据 var data=[ { name:'史莱姆', id:'001', hp:3 }, { name:'小蝙蝠', id:'002', hp:5 }, { name:'小恶魔', id:'003', hp:9 } ]; function addData(){ var transaction=db.transaction(osName,"readwrite"), store=transaction.objectStore(osName); db.map(function(o){ store.add(o); }); } addData(); </script> </body> </html>
不知道是哪写错了,明明和老师写的一样啊
61
收起
正在回答 回答被采纳积分+1
4回答
woximiemie
2018-02-08 10:59:29
setTimeout(function(){ addData(); },500);
由于异步API原因,不能保证能够在addData方法调用前获取db对象(实际上获取db对象也比执行一条语句慢得多),所以用setTimeout延迟一下应该就可以解决问题了
HTML5&CSS3进阶与常用框架 2018
- 参与学习 315 人
- 提交作业 136 份
- 解答问题 626 个
如果你有H5、CSS3、JS基础,热爱前端并希望在前端应用方面不断进步,那就来吧,本路径为你带来的课程有HTML5进阶、CSS3进阶、JS面向对象、jQ基础、Less等,助你进一步提升前端开发技能
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星