您的位置:首页 > Web前端 > JavaScript

【Hours】使用indexedDB中遇到的问题。

2015-12-01 15:39 573 查看
这里记录了做web app时使用indexedDB的一些心得。

在线尝试——Hours在线版,转制成的APK下载——下载APK

更多DEMO可以在我的个人主页查看——PKJY的个人主页
1、
想要通过cursor.key读取对应内容的其他储存了得值,结果一直提示找不到数据。到处找解决方法都没找到,去知道提问也没人解答。各个介绍indexedDB API的网站也翻遍了,谁知道最后检查的时候发现是查询的内容加了双引号。。。该内容是个变量,结果蠢蠢的给它加了双引号,害我半天搞不清坨。。以下是错误和正确的代码。看看就明白了!!

function loadDetails(cursorKey){
var transaction = db.transaction("Data","readwrite")
var store = transaction.objectStore("Data")
var idName = cursorKey.getAttribute("id")
var request = store.get("idName")

request.onsuccess = function(event){
if(request.result) {
  alert( request.result.planName+request.result.planTime)
  } else {
  alert("Data couldn't be found in your database!");
  }
}
}
以下是正确的代码:

function loadDetails(cursorKey){
var transaction = db.transaction("Data","readwrite")
var store = transaction.objectStore("Data")
var idName = cursorKey.getAttribute("id")
var request = store.get(idName)

request.onsuccess = function(event){
if(request.result) {
  alert( request.result.planName+request.result.planTime)
  } else {
  alert("Data couldn't be found in your database!");
  }
}
}
哎,总之血崩。。

2、想添加一个删除的按钮,一点击就可以删除对应的数据,但是一直没头绪,做不到点击的动作与自动读取数据挂钩,查阅API发现delete方法很方便,于是决定暂时改变策略,通过自行输入要删除的内容进行删除,虽然没那么只能,但是也总算是实现了删除的功能!!!

$("#del").on('click',showdelbtn)
function showdelbtn(){
var transaction = db.transaction("Data","readwrite")
var store = transaction.objectStore("Data")
var inputIndex = prompt("请输入要删除的计划名称!")
if(inputIndex!=null){
var testDel = store.delete(inputIndex)
testDel.onsuccess = function(){
alert("操作成功!");
listAll();
}
}
}
当然,该代码还很简陋,比如就算输入数据库没有的内容,也会提示操作成功。。我会在后续进行完善的!!

3、原来创建数据库是单独出来了,而后续的数据存储和读取之类的tansaction等都可以不在创建数据库的{}里面貌似,正在体验,若有情况再来修改!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息