2014-09-03 106 views
0

我写了一段读取文本文件的javascript/jquery。
我遇到了变量“fieldname”的问题。我在外部函数()中声明了它,并且在实际读取文件的内部函数()中为它赋值。但在我离开内部函数后,变量的内容就会丢失。代码:退出定义它的函数时全局变量值丢失

<script> 
    $(document).ready(function(){ 

     var usedlanguage = $("#usedlanguage").html(); 
     var fieldname = new Array(); 

     $.get('Language.txt', function(data) 
     { 
      var lines = data.split('\n'); 

      var res=""; 

      for(var i = 0; i<lines.length;i++) 
      { 
       var splitup = lines[i].split('\t'); 

       fieldname[i] = splitup[0]; 
       res = res + fieldname[i] + '\n'; 
      } 

      alert("fieldname length = " + fieldname.length); // here everything is OK 
      alert("" + res);        //this is good. 

     }); 

     alert("fieldname length = " + fieldname.length); // here it suddenly returns 0. 

}); 
</script>  

我对范围的理解有什么问题吗?还是有一个问题,有两个函数()定义?或者是其他东西?

+0

谢谢,我不知道它与Ajax的东西有什么关系。深入了解它的知道。 – blubbiedevis 2014-09-03 13:44:00

回答

0

您需要在DOM ready事件之外声明该变量以使其成为全局变量。目前,其背景仍然只是准备好的事件,并没有超出。以这种方式使用它::

var fieldname = new Array(); 
$(document).ready(function(){ 
    //rest code 
}); 
+0

这不能解决它。 – blubbiedevis 2014-09-03 13:41:23

+0

@blubbiedevis:你是否已经从dom内部删除了声明。 – 2014-09-03 13:44:04

+0

是的,它肯定会从ready事件中删除。我正在阅读“重复”的线程知道,这似乎是一个复杂的情况。 – blubbiedevis 2014-09-03 13:47:06