Я должен признать, что я еще не полностью понимаю область действия и привязку в JS. Так что терпите меня.
Я хотел бы получить результат r из функции q1. Но я не могу передать его за пределы анонимной функции в вызове tx.executeSql.
Первый console.log показывает, что r содержит желаемое значение. Но как передать это вызывающей функции?
Каркас - это мультяшки.
var q1 = function( table, column, where ) {
sql = "SELECT " + column + " from " + table;
r = "";
if (where != undefined)
sql += " WHERE " + where;
db.transaction( function(tx) {
tx.executeSql( sql, [], function( tx, results) {
r = results.rows.item(0)[column] ;
console.log(r + " 1 "); //1
}, errorHandler );
});
console.log(r + " 2 "); //2
return r;
}
window.addEvent('domready', function() {
db.transaction( function (tx) {
tx.executeSql( 'DROP TABLE IF EXISTS nutzer' );
tx.executeSql( "CREATE TABLE IF NOT EXISTS nutzer ( "
+ " id integer not null primary key, "
+ " name text not null default '(unbekannt)', "
+ " jahre integer not null default 0, "
+ " gewicht integer not null default 0)"
);
var params = [1,'der Name',10,30];
tx.executeSql( "INSERT OR IGNORE INTO nutzer (id,name,jahre,gewicht) values (?,?,?,?)", params);
});
console.log( q1('nutzer', 'name' ) + " 3 "); //3
})
Выход консоли:
2
3
der Name 1