- Bind and scope in javascript
- 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
- var q1 = function( table, column, where, callback ) {
- // ^ callbacks
- 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 + " 2 "); //2
- callback(r);
- // pass r back
- }, errorHandler );
- });
- console.log(r + " 1 "); //1
- return r;
- }
- q1('nutzer', 'name', function (r) {
- console.log( r + " 3 "); // results!
- });