下記のコードでは、indexedDBに1行のデータを保存して、そのデータを取得しています。その仮定で、変数参照時に、わからないことがありましたので質問するに至りました。
疑問点は、
データ取得用に用意した変数 idと変数 wordに、初期値を設定し、その後にデータを取得し、上書きしています。しかし、その後、上書きしたはずのデータが初期にセットした値に戻っていることです。
順に見ていくと
下記コード※0
こちらの部分で、変数 id と 変数 word に初期の値をセットしています。
下記コード※1
この部分で、取得したデータを変数 id と 変数 word に上書きします。
console.log()で中身をみても、変数は上書きされています。
下記コード※2
この部分で、もういちどconsole.log()で確認してみると、変数 id と 変数 wordの値が初期値になっています。
やりたいことは、こちらの下記コード※2の位置で、取得して上書きしたデータを参照したいのですが、どのようにすればよいでしょうか?
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"><title>Test</title> </head> <body> <script> (function() { 'use strict'; //データベースとストア作成 var dbName ='Test'; var storeName ='SampleDate'; var db; var indexedDB = window.indexedDB || window.mozIndexedDB || window.msIndexedDB; var openRequest = indexedDB.open(dbName, 1.0); var openGet = indexedDB.open(dbName, 1.0); openRequest.onupgradeneeded = function(e) { db = e.target.result; openRequest.onsuccess = function(event) { db = event.target.result; } db.createObjectStore(storeName, { keyPath: 'id'}); } //データ挿入 var data = {id : 'B10300', word : 'Good Morning!'}; openRequest.onsuccess = function(e){ db = e.target.result; var putReq = db.transaction(storeName, 'readwrite').objectStore(storeName).put(data); } //データ取得 var searchId = 'B10300'; var id = 0; //(※0)初期値:0 var word = 'Hello World!!'; //(※0)初期値:Hellow World!! openGet.onsuccess = function(e){ db = e.target.result; var getReq = db.transaction(storeName, 'readonly').objectStore(storeName).get(searchId); getReq.onsuccess = function(ev){ id = ev.target.result.id; word = ev.target.result.word; console.log(id); //(※1) 上書き: B10300 console.log(word);//(※1) 上書き: Good Morning! } } console.log(id); //(※2) 0 初期値になってしまう console.log(word); //(※2) Hello World!! 初期値になってしまう })(); </script> </body> </html>
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。