Uncaught ReferenceError:

Uncaught ReferenceError:

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>Document</title>

</head>

<body>

<script type="text/javascript">

var request=indexedDB.open('testDB',33);

console.log(request);


request.onsuccess=function(){

console.log('创建数据库成功');

}

request.onerror=function(){

console.log('数据库创建失败');

}

request.onupgradeneeded=function(){

//console.log('版本号升级了');

var db=request.result;

var store=db.createObjectStore('test2',{keyPath:'id'});

store.createIndex('test2','age',{unique:false});

//unique 唯一性 如果有多个的情况下 就不写入

}


var json=[{

"id":200,

"name":"Modoy",

"age":15

},{

"id":201,

"name":"Busy",

"age":20

},{

"id":202,

"name":"Sky",

"age":25

},{

"id":209,

"name":"Leo",

"age":27

},{

"id":301,

"name":"Sky",

"age":30

}]


setTimeout(function(){

var db=request.result;

var transaction=db.transaction('test2','readwrite');

var store=transaction.objectStore('test2');


var index=store.index('test2');

var requestNode=index.openCursor(IDBKeyRange.upperBound(29));


requestNode.onsuccess=function(){

var curosr=requestNode.result;

if(curosr){

if(cursor.value.name=="Leo"){

console.log('1');

}

}

}

},300);

/*

var requestNode = store.openCursor(IDBKeyRange.bound(200,201,true));


requestNode.onsuccess=function(){

//console.log(requestNode.result.value);

var cursor=requestNode.result;

if(cursor){

console.log(cursor.value);

cursor.continue();

};

};*/

/*

for(var i=0;json.length;i++){

store.add(json[i]);

}*/

/*

requestNode.onsuccess=function(){

console.log("数据添加成功");

console.log(requestNode.result);

};*/

//store.delete(203);

/*

store.put({

"id":203,

"name":"Sky",

"age":"29"

})*/

/*

for(var i=0;i<json.length;i++){

store.add(json[i]);

}

*/

/*

var requestNode=store.getAll();

requestNode.onsuccess=function(){

//console.log(requestNode);

for(var i=0;i<requestNode.result.length;i++){

console.log(requestNode.result[i].name);

console.log(requestNode.result[i].age);

}

//console.log(requestNode.result.name);

//console.log(requestNode.result.age);


}*/


</script>

</body>

</html>



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

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

3回答
好帮手慕慕子 2019-07-04 17:00:51

同学你好, 因为变量声明和后续使用的单词书写不一致,导致报错, 建议修改成一致的名称

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

如果帮助到了你, 欢迎采纳!

祝学习愉快~~~

  • 提问者 慕尼黑5444710 #1
    谢谢老师,好了,下次细心点
    2019-07-04 17:04:30
  • 提问者 慕尼黑5444710 #2
    谢谢老师,好了,下次细心点
    2019-07-04 17:04:31
提问者 慕尼黑5444710 2019-07-04 16:40:18

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>Document</title>

</head>

<body>

<script type="text/javascript">

var request=indexedDB.open('testDB',35);

console.log(request);


request.onsuccess=function(){

console.log('创建数据库成功');

}

request.onerror=function(){

console.log('数据库创建失败');

}

request.onupgradeneeded=function(){

//console.log('版本号升级了');

var db=request.result;

var store=db.createObjectStore('test2',{keyPath:'id'});

store.createIndex('test2','age',{unique:true});

//unique 唯一性 如果有多个的情况下 就不写入

}


var json=[{

"id":200,

"name":"Modoy",

"age":15

},{

"id":201,

"name":"Busy",

"age":20

},{

"id":202,

"name":"Sky",

"age":25

},{

"id":209,

"name":"Leo",

"age":27

},{

"id":301,

"name":"Sky",

"age":30

}];



setTimeout(function(){

var db=request.result;

var transaction=db.transaction('test2','readwrite');

var store=transaction.objectStore('test2');

/*

for(var i=0;json.length;i++){

store.add(json[i]);

}*/


var index=store.index('test2');

var requestNode=index.openCursor(IDBKeyRange.upperBound(27));


requestNode.onsuccess=function(){

var corsor=requestNode.result;

if(corsor){

if(cursor.value.name=='Leo'){

curosr.update({

"id":209,

"name":"Leoooo",

"age":27

});

}

console.log(corsor.value);

corsor.continue();

}

}



},300);



</script>

</body>

</html>



好帮手慕慕子 2019-07-04 16:22:15

同学你好,老师测试你的代码没有出现报错信息, 请问同学这里说的报错信息,是将你注释的语句打开出现报错吗? 如果是指这里的话, 那么如下图所示,因为store没有定义导致的报错。

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

建议: IndexedDB的方法是异步的,并不是说代码执行完毕就获取到对象了,它也是有请求——响应的模式。这里使用setTimeout模拟这个模式, 所以需要在回调函数中获取

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

如果不是指这里, 建议:可以详细的描述一下你的问题, 便于准确的定位和解决问题,再次提问, 我们会继续为你解答的

如果帮助到了你, 欢迎采纳!

祝学习愉快~~~


  • 提问者 慕尼黑5444710 #1
    谢谢老师刚刚那个解决了但是现在又出现了这样的问题: indexDB6.html:64 Uncaught ReferenceError: cursor is not defined at IDBRequest.requestNode.onsuccess (indexDB6.html:64) 代码我已经传上去了。
    2019-07-04 16:41:16
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
3.WebAPP开发与小程序
  • 参与学习           人
  • 提交作业       622    份
  • 解答问题       6815    个

微信带火了小程序,也让前端工程师有了更多的展现机会,本阶段带你从移动基础知识的学习到webAPP开发,及小程序开发,让你PC端与移动端两端通吃。

了解课程
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

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