[英]my alert is undefined when returning from function
我试图从查询中返回值,但是当我提醒我的var时说它未定义。 下面是我的代码
function countRows(){
db.transaction(function (tx){
tx.executeSql('SELECT id FROM Courses', [], function (tx, results) {
var len = results.rows.length;
return len;
});
});
}
var test = countRows();
alert(test);
问题是您将len
返回到错误的函数。 在这种情况下, len
将返回到由function (tx, results) {
定义的function (tx, results) {
。 最好的解决方案是添加一个回调以返回答案。
function countRows(callback){
db.transaction(function (tx){
tx.executeSql('SELECT id FROM Courses', [], function (tx, results) {
var len = results.rows.length;
callback(len);
});
});
}
var test;
countRows(function(len){
alert(len)
test = len;
});
请记住,此代码尚未经过这种情况的测试。
编辑:我忘记了异步运行的javascript。 我已经更改了代码,因此它应该更新test
并发出警报,但是如果您希望代码按最初的计划运行,则必须做一些特殊的事情,或者只是将所有代码放在回调中。
对我来说,这似乎是一个关闭问题。 请参见此处Javascript闭包。 因为您的目的是警告len的值,所以我创建了以下代码,它对我有用,可以正确警告var len。 尽管您必须修改dbTran函数并添加必要的代码。
function countRows()
{
var dbTran = function() { var len = 123; alert(len);};
return dbTran();
}
countRows();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.