2014-09-03 109 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