Задать вопрос
@newaitix

Как вывести пременную за пределы функции javascript?

var db = openDatabase('webdatabases', '1.0', '', 2*1024*1024)
db.transaction(function (tx) {
tx.executeSql('CREATE TABLE IF NOT EXISTS logistic (id unique, log)');
tx.executeSql('INSERT INTO logistic (id, log) VALUES (0, "foobar")');
});
 
function sql_result(tx, results) {
var len = results.rows.length, logi;
for (var i = 0; i < len; i++){
logi = results.rows.item(i).log;
}
return logi;
}
 
db.transaction(function (tx) {
tx.executeSql('SELECT * FROM logistic', [], function(tx, result){
rav = sql_result(tx, result);
});
});
alert(rav); // ничего не выдает
// Здесь нужно вывести значение переменной rav которое она получила в функции как это сделать ?
  • Вопрос задан
  • 5467 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 3
@codercat
Потому что асинхронность. Вы должны пробовать получить значение rav только тогда, когда она будет определена. Лучше всего сделать отдельную функцию, чтобы у вас было что-то вроде этого:
...
db.transaction(function (tx) {
tx.executeSql('SELECT * FROM logistic', [], function(tx, result){
rav = sql_result(tx, result);
some_fun(rav);
});
..

var some_fun = function(rav) {
alert(rav);
}
Ответ написан
pushthebutton
@pushthebutton
переменная rav находится вне зоны видимости. Поэтому она не объявлена.

var rav,
db = openDatabase('webdatabases', '1.0', '', 2*1024*1024)
db.transaction(function (tx) {
tx.executeSql('CREATE TABLE IF NOT EXISTS logistic (id unique, log)');
tx.executeSql('INSERT INTO logistic (id, log) VALUES (0, "foobar")');
});
 
function sql_result(tx, results) {
var len = results.rows.length, logi;
for (var i = 0; i < len; i++){
logi = results.rows.item(i).log;
}
return logi;
}
 
db.transaction(function (tx) {
tx.executeSql('SELECT * FROM logistic', [], function(tx, result){
rav = sql_result(tx, result);
});
});
alert(rav); //


Или сделайте через функцию, как написано выше
Ответ написан
mlnkv
@mlnkv
JavaScript Developer
db.transaction(function (tx) {
  tx.executeSql('SELECT * FROM logistic', [], function(tx, result){
    rav = sql_result(tx, result);
    myFunction(rav);
  });
});

function myFunction(rav){
  alert(rav); 
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы