不能在js中访问循环外的数组

时间:2016-10-01 13:33:59

标签: javascript jquery

我有一个从WebSQL数据库中检索数据的脚本,然后剥离每个记录的第一个字母并构建一个数组以便稍后显示。

我只能访问for循环中的数组。任何帮助,将不胜感激。

$(document).ready(function(e) {
  var init;
  var len;
  inits = [];

  var db = openDatabase("contacts", "1.0", "contacts database", 5 * 1024 * 1024);
  db.transaction(function(tx) {
    tx.executeSql("SELECT * FROM names", [], function(tx, results) {
      len = results.rows.length;
      $("#recordcount ").text(len + " records found");

      for (i = 0; i <= len; i++) {
        var str = results.rows.item(i).lname;
        init = str.substring(0, 1);
        if ($.inArray(init, inits) !== -1) {} else {
          inits.push(init[i]);
        }
$.each(inits, function (index,value){
 alert(index + ":" + value);
});




      };
    });
  });
});

当尝试访问inits时,除非我在for循环中访问它,否则我得到的所有内容都是未定义的。

console.log(inits)
VM112:1 ["H", undefined, undefined]

THX。

1 个答案:

答案 0 :(得分:0)

有很多事情发生我不太明白为什么, 安置等。

无论如何,请放手一搏。 (抱歉删除了jquery)

  var init;
  var len;
  var inits = [];

  var db = openDatabase("contacts", "1.0", "contacts database", 5 * 1024 * 1024);
  db.transaction(function(tx) {
    tx.executeSql("SELECT * FROM names", [], function(tx, results) {
      len = results.rows.length;
      recordcount.innerHTML = (len + " records found");

      for (i = 0; i < len; i++) {
        var str = results.rows.item(i).lname;
        console.log('str: '+str);
        init = str.substring(0, 1);
        console.log('init: '+init);

        if(inits.indexOf(init) === -1){
            inits.push(init);
        }

      }
      inits.forEach(function( index, value ) {
        console.log(a);
      });

      //Done.
      logIt();
    });
  });
  function logIt(){
      console.log(inits);
  }