动态值存储在javascript json中

时间:2011-08-25 09:05:04

标签: javascript json html5

我有一个关于Dijkstra算法的项目,用画布绘制图形。我在我的html文件的JavaScript中有以下代码。这是JavaScript代码的一部分。

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'是用户双击画布时的功能。 Canvas用于绘制节点和边。 'ondblclick'用于绘制节点。

我的问题是以字典格式将节点的坐标值保存到“图形”。它只接受最后一个值。如何使用变量I和cell.x,cell.y values ??

将所有值更新/追加/扩展到同一个字典

2 个答案:

答案 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);
}

为了将数据导入graph,您需要将对象推入数组,然后遍历该数组。你的问题是你错误地使用了i变量,因此存储(和检索)你的坐标彼此之上。

答案 1 :(得分:0)

字典(键值存储)是图形的错误数据结构。使用可以附加节点的数组。对数组中的每个元素使用字典以保存其中的坐标。