我想加載一個外部json文件到d3.js,但每次我嘗試將加載的數據分配給一個變量(所以後來我可以使用它與數據( );)它給了我在console.log未定義。我覺得我嘗試了一切,但我不能將數據分配給一個變量,不知道這裏有什麼問題。d3.js不能分配加載的json數據到一個變量
var dataset
function checkIt(data){
for (var i in data) {
var data_clean;
data_clean = data[i].Total
dataset = data_clean
}
}
console.log(dataset)
d3.json("data.json", checkIt);
數據集
[
{
"Continent":"Europe",
"Country_Names":"Albania",
"Total":3.8
},
{
"Continent":"Europe",
"Country_Names":"Armenia",
"Total":5.4
},
{
"Continent":"Europe",
"Country_Names":"Austria",
"Total":64.7
},
{
"Continent":"Europe",
"Country_Names":"Azerbaijan",
"Total":29.3
}]
但是當我在svg.selectAll(「path」).data(dataset)中使用數據集時,它給了我錯誤無法讀取未定義的屬性「長度」,我猜它與數據集不被讀取有關? – Imo
在線查找異步JavaScript。僅僅因爲您稍後在代碼中使用svg.selectAll(「path」).data(dataset)並不意味着它會在d3.json從服務器返回數據之後發生。嘗試把你所有的渲染邏輯放在checkIt中。如果你的服務器工作正常,d3.json能夠在光盤上找到這個文件,那麼一切都應該順利進行。只需在checkIt函數中運行console.log(data),就可以測試是否從服務器獲取數據。 – sergeyz
試試這個。的console.log( '1'); setTimeout(function(){console.log('3');},0);的console.log( '2');這將說明你的代碼中發生了什麼。 – sergeyz