2014-04-12 96 views
0

我有一个for循环内部的变量,即使我已经成为全局变量,但无法在外部访问它。为什么我无法访问它?变量是“finalVar”这里是代码:为什么我无法访问这个全局变量?

$(function(){ 
    var successfullStatements = $("#successfullStatements"), 
     errors = $("#errors") 

    html5sql.process(
     [{ 
      sql:"SELECT * FROM StarWarsCharacters WHERE name=?;", 
      data:[Jsonvar] 
     }], 
     function(transaction, results, rowsArray){ 
      for(var i = 0; i < rowsArray.length; i++){ 
       //the variable I tried to make global 
       window.finalVar = rowsArray[i].name; 

      } 

     }, 
     function(error, statement){ 

     } 
    ); 
    }); 
    }); 

    alert(finalVar); //tried checking to see if variable could be accessed 
+3

我打赌有,你认为是同步异步函数。 –

回答

1

html5sql.process是一个异步函数。因此,除非执行功能合格到html5sql.process,否则finalVar将不会被填充。但是只有当results被提取时才会执行。因此,您可能需要将alert移至result真正填充的位置。

$(function() { 
    var successfullStatements = $("#successfullStatements"), 
     errors = $("#errors") 
     html5sql.process(
      [{ 
       sql: "SELECT * FROM StarWarsCharacters WHERE name=?;", 
       data: [Jsonvar] 
      }], 
      function(transaction, results, rowsArray) { 
       for (var i = 0; i < rowsArray.length; i++) { 
        //the variable I tried to make global 
        alert(rowsArray[i].name); 
       } 
      }, 
      function(error, statement) {} 
     ); 
}); 
0
try this: 

    html5sql.process(
    [{ 
     sql:"SELECT * FROM StarWarsCharacters WHERE name=?;", 
     data:[Jsonvar], 
     async:false 
    }], 
    function(transaction, results, rowsArray){ 
     for(var i = 0; i < rowsArray.length; i++){ 
      //the variable I tried to make global 
      window.finalVar = rowsArray[i].name; 

     } 

    }, 
    function(error, statement){ 

    } 
); 

Please note the function is called asynchronously here.so you have to make the function call synchronous by making "async:false". Then you can get the variable's value outside the for loop. 
+0

Async false不是一个选项,请参阅http://html5sql.com/guide.html – megawac

+0

即使这是基于'jQuery',请不要将'async'设置为'false'。如果没有人知道这个选择的存在,我们会过得更好。 –

相关问题