2017-05-26 17 views
1

可變範圍我有在的FileReader()代碼我有範圍的問題。我有兩個console.logs()從上傳的JSON文件中輸出數據。按照預期在解析JSON的函數中輸出一個。另一個輸出'模板'數據/對象。它看起來像它的範圍問題。我應該在哪裏定義更新的角色對象有解析JSON數據更新漢字對象?的JavaScript的FileReader()函數

函數應該導入JSON文件,分析它,然後串入一個文本,並採取了解析,並輸出放到角色物由整個頁面可借鑑。

正在導入的角色對象,是從另一用戶會話的角色對象的導出的版本。

$('#import').click(function(){ 

    var iData = document.getElementById('selectFiles').files; 
    console.log(iData); 
    if (iData.length <= 0) { 
    return false; 
    } 

    var file = new FileReader(); 

    file.onload = function(x) { 
    console.log(x); 
    var output = JSON.parse(x.target.result); 
    var stringed = JSON.stringify(output,null,2); 
    document.getElementById('result').value = stringed; 
    character = output; 
    console.log(character); //this outputs the data as expected 
    } 

    console.log(character);//this outputs blank 'template' data 
    file.readAsText(iData.item(0)); 
}); 

我在前些日子發佈了類似的帖子,但帖子有點....不好,如果我是誠實的。希望我已經探索足夠讓這個更好一點。

感謝

+1

'的console.log(字); //這個輸出空白「模板」結束了'onload'功能之前data'已經被解僱了。到那個時候,'character'變量還沒有被你的回調更新。 –

+0

謝謝你,我可以用這方面的工作。我也檢查了這個騙局。 – Kalacia

回答

2

該作品的console.log是你onload函數內,這意味着它不會被調用,直到函數成功加載你的JSON。第二個console.log不起作用,因爲它在JSON有機會加載之前調用。