2013-07-26 35 views
0

該代碼用於當它臨危數據JQuery的使用字符串作爲變量名

GraphChannel.on("data", function (newdata) { 
    var newdataobj = JSON.parse(newdata), updateGraph = "#graph"+newdataobj.ID, updateData = "data"+newdataobj.ID, updateOptions = "options"+newdataobj.ID; 
    incrementArray(newdataobj.ID, newdataobj.Data); 
    $.plot(updateGraph, [ updateData ], updateOptions); 
    console.log(newdataobj); 
    console.log(updateGraph); 
    console.log(updateData); 
    console.log(updateOptions); 
}); 

控制檯日誌更新圖表是:

Object {ID=0, Data=1} 
#graph0 
data0 
options0 

如果刪除的變量和使用0作爲ID和1的數據,代碼應該是這樣的:

GraphChannel.on("data", function (newdata) { 
    incrementArray(0, 1); 
    $.plot("#graph0", [ data0 ], options0); 
}); 

我不知道爲什麼,這是行不通的,雖然

增量陣:

function incrementArray(array, letter){ 
for(var i = 0; i < array.length; i++){ 
    var subArray = array[i]; 
    if(subArray[0] == letter){ 
     subArray[1]++; 
     return; 
    } 
} 
} 
+0

什麼是'incrementArray'功能嗎? –

+0

@StijnMartens它將數組中的值加1,我知道這不是問題的原因,但我已將該函數添加到我的代碼 –

+0

您想實現什麼目標? –

回答

0

做到這一點的唯一方法是使用eval()。 但這不是一個好的做法。

什麼是一個很好的做法是使用數組:

// Store all your data in an array 
var data = [ 
    'data for plot 0', 
    'data for plot 1' 
] 

// Store all your options in an array 
var options [ 
    { 
     //options for plot 0 
    }, 
    { 
     //options for plot 1 
    } 
] 

然後,當你想爲陰謀0的數據,你可以使用:

data[0]; 

// In your case 
var updateData = data[newdataobj.ID]; 

所以,你的代碼變得像:

GraphChannel.on("data", function (newdata) { 
    var newdataobj = JSON.parse(newdata) 
    var updateGraph = "#graph"+newdataobj.ID; 
    var updateData = data[newdataobj.ID]; 
    var updateOptions = options[newdataobj.ID]; 

    //incrementArray(newdataobj.ID, newdataobj.Data); This function does nothing? 

    $.plot(updateGraph, [ updateData ], updateOptions); 
}); 

但我認爲還是有些不對。你說當你收到數據時你想更新這個圖。但是,你不應該使用這些新數據來放置圖表嗎? 而不是使用存儲在文檔中的現有數據。

如果我採取這一考慮,我覺得你的整個代碼應該是這樣的:

var options [ 
    { 
     //options for plot 0 
    }, 
    { 
     //options for plot 1 
    } 
] 

GraphChannel.on("data", function (newdata) { 
    var newdataobj = JSON.parse(newdata) 
    var updateGraph = "#graph"+newdataobj.ID; 
    var updateOptions = options[newdataobj.ID]; 

    // Use the newdataobj.Data: 
    $.plot(updateGraph, [ newdataobj.Data ], updateOptions); 
}); 
相關問題