我遇到一个奇怪的错误,我整整一天只是为了弄清楚自己的状况,但我放弃了:)下面的代码在一个函数中,该函数从SQLite数据库获取数据并将结果分配到多维数组中,然后函数返回此数组。这实际上有效,但是当数据库中的行为3或更高时,将显示以下错误。我确定在整个循环中为每个值分配的值是一致的,因为我尝试使用typeof来了解类型。请帮我。谢谢!
TypeError:类型错误
var db = openDB();
var arrItems = [[],[]];
db.transaction(function(tx) {
var rs = tx.executeSql('SELECT * FROM items WHERE category=?;', [txtcategory]);
arrItems.length = rs.rows.length;
for(var i = 0; i < rs.rows.length; i++) {
arrItems[i][0] = rs.rows.item(i).category;
arrItems[i][1] = rs.rows.item(i).date;
arrItems[i][2] = rs.rows.item(i).descr;
arrItems[i][3] = rs.rows.item(i).descrlong;
arrItems[i][4] = rs.rows.item(i).value;
}
}
最佳答案
您的多维数组(实际上只是数组的数组)被声明为只有两行:
var arrItems = [[],[]];
这就是为什么当您有3行或更多行时它失败的原因。而不是静态声明它,您可能应该在循环中添加新行。所以
var arrItems = [];
然后,类似
arrItems[i] = []
根据您正在执行的操作,您可能需要首先检查该行是否已经存在。