Здравствуйте. Есть такой код: Код: function getRec(Rec, f) { connectDB(function (db) { var request = db.transaction([storeName], "readonly").objectStore(storeName).get(id = 0); request.onerror = logerr; request.onsuccess = function () { Rec = request.result; console.log(Rec); f(request.result ? request.result : -1); } }); } Вывод в консоль самого Rec я вижу в хроме. Но, например, Rec.width консоль выдает undefined. Записать объект Rec {width : 1000, .....} мне удалось, а вот прочитать записанное из другого файла js не могу. Я только пытаюсь освоить js. Помогите, может кто-то рабочий код подкинет? Дальше я сам попробую разобраться. Заранее благодарен.
попробуйте так: function getRec(Rec, f) { connectDB(function (db) { var request = db.transaction([storeName]).objectStore(storeName).get(id = 0); request.onerror = logerr; request.onsuccess = function () { Rec = request.result; console.log(Rec); f(request.result ? request.result : -1); } }); }
В вашей функции getRec() вы используете аргумент Rec, который, как я понимаю, должен быть объектом, в который будет записан результат запроса к базе данных. Однако, присваивание значения Rec = request.result не изменит значение объекта, на который ссылается переменная Rec в вызывающем коде. Для того чтобы изменить значение объекта, вам нужно изменить его свойства напрямую. Например, если вы хотите установить значение свойства width объекта Rec, вы можете сделать это следующим образом: Код: function getRec(Rec, f) { connectDB(function (db) { var request = db.transaction([storeName], "readonly").objectStore(storeName).get(id = 0); request.onerror = logerr; request.onsuccess = function () { var result = request.result; console.log(result); if (result) { Rec.width = result.width; // устанавливаем значение свойства width объекта Rec } f(result ? result : -1); } }); } Здесь мы создаем новую переменную result, чтобы не изменять значение request.result напрямую. Затем мы проверяем, что result не равен null или undefined, и если это так, то устанавливаем значение свойства width объекта Rec равным значению свойства width объекта result. Затем мы вызываем функцию f() с результатом запроса в качестве аргумента. После вызова функции getRec() вы можете обратиться к свойству width объекта Rec и увидеть его значение: Код: var Rec = { width: 0 }; // создаем объект Rec с начальным значением свойства width getRec(Rec, function(result) { console.log(Rec.width); // будет выведено значение свойства width объекта Rec, полученное из базы данных }); Надеюсь, это поможет вам решить проблему.