2011-08-25 88 views
2

我有一個關於Dijkstra算法的項目,用畫布繪製圖形。我在我的html文件的JavaScript中有以下代碼。這是JavaScript代碼的一部分。在javascript中存儲動態值json

var graph = {}; 
var i = 0; 
function ondblclick(e) 
{ 
    var cell = getpos(e) 
    canvasX = cell.x-10; 
    canvasY = cell.y-10; 
    graph = {i: {coord : [cell.x,cell.y]}}; 
    var g_canvas = document.getElementById("canvas"); 
    var context = g_canvas.getContext("2d"); 
    var cat = new Image(); 
    cat.src = "dot1.png"; 
    cat.onload = function() 
    { 
     context.drawImage(cat,canvasX , canvasY); 
    } 
} 

i = i+1 
function submit() 
{ 
for (i = 0; i<= 5; i = i + 1) 
    alert(graph.i.coord); 
} 

這裏我有一個畫布,'ondblclick'是當用戶雙擊畫布時的功能。畫布用於繪製節點和邊緣。 'ondblclick'用於繪製節點。

我的問題是將節點的座標值以字典格式保存到「圖形」。它只接受最後一個值。我如何使用變量I和cell.x,cell.y值更新/追加/擴展所有值到同一個字典中

+0

這裏提交功能的作品時,點擊提交按鈕與畫布。 –

回答

1

你已經差不多了。

var graph = []; 
function ondblclick(e) 
{ 
    var cell = getpos(e) 
    canvasX = cell.x-10; 
    canvasY = cell.y-10; 
    graph.push({coord : [cell.x,cell.y]}); 
    var g_canvas = document.getElementById("canvas"); 
    var context = g_canvas.getContext("2d"); 
    var cat = new Image(); 
    cat.src = "dot1.png"; 
    cat.onload = function() 
    { 
     context.drawImage(cat,canvasX , canvasY); 
    } 
} 

function submit() 
{ 
for (i = 0; i<= 5; i = i + 1) 
    alert(graph[i].coord); 
} 

爲了獲取數據到你需要的對象推到一個數組,然後通過數組循環。你的問題是你錯誤地使用了i變量,因此在彼此的頂部存儲(並檢索)你的座標。

0

字典(鍵值存儲)是圖的錯誤數據結構。使用可以附加節點的數組。使用數組中的每個元素的字典來保存座標。