2012-10-15 81 views
0

我試圖用ajax從我的文本文件加載信息到一個數組中,我使用此代碼:AJAX不與陣列工作

function loadWords(){ 
    var xhr = new XMLHttpRequest(); 
    xhr.open('GET', "dico/francais.html"); 
    xhr.onreadystatechange = function(){ 
     if(xhr.readyState == xhr.DONE && xhr.status == 200){ 
      dico = xhr.responseText.split("\n"); 
      for(var i=0; i<wordsNBR; i++){ 
       var x = Math.floor(Math.random()*dico.length); 
       words[i] = dico[x]; 
      } 
     } 
    } 
    xhr.send(null); 
} 

它wordks但是當我試圖改變

for(var i=0; i<wordsNBR; i++){ 
       var x = Math.floor(Math.random()*dico.length); 
       words[i] = dico[x]; 
      } 

for(var i=0; i<wordsNBR; i++){ 
       var x = Math.floor(Math.random()*dico.length); 
       words.push(dico.splice(x,1)); 
      } 

這是行不通的任何機構知道爲什麼嗎?

+0

這是什麼 「表」? –

+3

它是如何工作的?你有錯誤信息嗎?還是它做了你期望以外的事情? –

+0

對不起,這是迪科,而不是表,這是一個錯誤 –

回答

1

dico.splice(x,1)更改數組並返回已移除的元素。這可能有意義x < dico.length,因爲它在dico數組中隨機取詞。

所以我想你的第一個錯誤就是你使用了錯誤的變量。

另一個錯誤是splice返回一個數組而不僅僅是一個元素。如果你想要返回的元素,你需要採取dico.splice(x,1)[0]

這樣做:

var x = Math.floor(Math.random()*dico.length); // takes an index in what is left in dico 
words.push(dico.splice(x,1)[0]); // removes the word and add it to words 
+0

不,我已經寫了一個錯誤的代碼,我已經修復它,所以現在你可以幫助我找到真正的問題。謝謝 –

+0

我發現了另一個bug。請參閱編輯。 –