-1
我在同一頁上製作了d3中的兩個條形圖,並且只顯示了第二個條形圖。因此,我用於第二個條形圖的js文件有一個錯誤,即全局變量在一個函數中爲undefined
。在javascript中未定義的全局變量
var file_name = "story_fandom.tsv";
var visData;
//Step 1. Once every information is loaded to the browser
$(document).ready(function(){
//Step 2. Load tsv file
d3.tsv(file_name, function(error, data) {
//If no data found: throw error
if (error) throw error;
//If the data is loaded successfully, now we are ready to draw things with D3.
else{
for(var i=0;i<data.length;i++){
data[i].stories = +data[i].stories;
}
visData = data;
console.log(visData);
drawBar();
}
});
});
//Step 5. code drawBar
function drawBar(){
$(".vis2").empty();
var data = [];
for(var i=0;i< visData.length;i++){
temp={};
temp.color = visData[i].color;
temp.fandom = visData[i].fandom;
temp.amount = visData[i].stories;
data.push(temp);
}
這是我的js。第二個js文件是除另一個變量「收藏夾」外相同的格式
全局變量visData
在for循環drawBar()
中顯示undefined
。我的錯誤是什麼?
繼承人的的jsfiddle https://jsfiddle.net/khyatijparekh/dmx2nun7/
確定在分配給'visData'後,你只能從該回調中調用'drawBar()'嗎? – Bergi
不要使用全局變量,而應將'drawBar'作爲'visData'參數並將'data'作爲參數。 – Bergi
該錯誤仍在drawBar()的for循環中。我不明白爲什麼它發生,其他js文件沒有顯示條形圖沒有這個問題。我試着將它作爲參數傳遞,錯誤沒有去 –