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 星