我遇到一个奇怪的错误,我整整一天只是为了弄清楚自己的状况,但我放弃了:)下面的代码在一个函数中,该函数从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] = []


根据您正在执行的操作,您可能需要首先检查该行是否已经存在。

09-15 23:56