【发布时间】:2014-03-03 15:30:58
【问题描述】:
我想使用 javascript 调用回调函数,正如您从 http://docs.phonegap.com/en/3.0.0/cordova_storage_storage.md.html#database_size 的示例代码中看到的那样
function queryDB(tx) {
tx.executeSql('SELECT * FROM DEMO', [], querySuccess, errorCB);
}
function querySuccess(tx, results) {
console.log("Returned rows = " + results.rows.length);
// this will be true since it was a select statement and so rowsAffected was 0
if (!results.rowsAffected) {
console.log('No rows affected!');
return false;
}
// for an insert statement, this property will return the ID of the last inserted row
console.log("Last inserted row ID = " + results.insertId);
}
function errorCB(err) {
alert("Error processing SQL: "+err.code);
}
var db = window.openDatabase("Database", "1.0", "Cordova Demo", 200000);
db.transaction(queryDB, errorCB);
方法“queryDB”在没有任何参数的情况下被调用,但该函数被定义为接收变量“tx”。来自 PHP,我无法理解它是如何工作的,因为它确实如此。 还有 querySuccess 接收 2 个参数并且也可以工作。
我的问题是我需要发送 1 我自己的参数,所以我修改了对 queryDB 的调用,如下所示:
var db = window.openDatabase("Database", "1.0", "Cordova Demo", 200000);
db.transaction(queryDB(myParam), errorCB);
和
function queryDB(tx, myParam) {
tx.executeSql('SELECT * FROM' + myParam, [], querySuccess, errorCB);
}
但它不起作用。
1) 怎么会收到未发送的参数? 2)如何添加自己的参数而不破坏它?
【问题讨论】:
-
当您将
myParam发送到queryDB(myParam)时会出现什么错误? -
我不知道,因为我在设备模拟器上运行并且我还没有调试控制台。但是 JpBaena13 解释了为什么它不能按预期工作。
-
JavaScript 中的参数是一个建议,而不是强制要求。无论声明了哪些参数,所有函数都可以采用任意数量的参数(从 0 到 9999 及以上)。您可以将参数视为索引参数的别名:
function foo(a,b,c) {...}基本上等同于function foo(){ var a = arguments[0], b = arguments[1], c = arguments[2]; ...}。
标签: javascript cordova parameters callback