我遇到了一个奇怪的错误,我花了一整天的时间来解决这个问题,但我放弃了:(下面的代码在一个函数中,该函数从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] = []
根据您正在执行的操作,您可能需要首先检查该行是否已经存在。