JavaScript动态图
快速提问,我对JavaScript非常陌生,毫无疑问,我将从这个项目中学到很多东西。所以我提出一个问题(很可能是个愚蠢的问题),我的问题是: 我计划构建一个web应用程序,它可以从Raphael或Joint.js中动态生成形状,这两种形状都非常相似,所谓动态,我的意思是,在用户输入之前,将有大量未定义的对象需要绘制,例如,他们希望绘制的对象数量-因此,下面的一些代码可以强化我的问题:JavaScript动态图,javascript,jquery,web-applications,raphael,jointjs,Javascript,Jquery,Web Applications,Raphael,Jointjs,快速提问,我对JavaScript非常陌生,毫无疑问,我将从这个项目中学到很多东西。所以我提出一个问题(很可能是个愚蠢的问题),我的问题是: 我计划构建一个web应用程序,它可以从Raphael或Joint.js中动态生成形状,这两种形状都非常相似,所谓动态,我的意思是,在用户输入之前,将有大量未定义的对象需要绘制,例如,他们希望绘制的对象数量-因此,下面的一些代码可以强化我的问题: var erd = Joint.dia.erd; Joint.paper("world", 800, 250);
var erd = Joint.dia.erd;
Joint.paper("world", 800, 250);
var e1 = erd.Entity.create({
rect: {
x: 220,
y: 70,
width: 100,
height: 60
},
label: "Entity"
});
因此,我创建了一个矩形类型的对象,但我想知道的是——我可以这样做吗:
var erd = Joint.dia.erd;
Joint.paper("world", 800, 250);
int x, y;
for (int i = 0; i < numOfUserDefObjects; i++) {
var e1 = erd.Entity.create({
rect: {
x: x,
y: y,
width: 100,
height: 60
},
label: "Entity"
x + 20;
y - 40;
});
}
var-erd=接头直径erd;
联合文件(“世界”,800250);
int x,y;
for(int i=0;i
让我困惑的是,vare1
。如果有两个对象要创建,那么当循环第二次遍历循环/创建第二个对象时,是否会从我的SVG/画布中擦除/删除/覆盖在循环中创建的第一个对象
对此有一点见解将不胜感激!同样,缺乏JavaScript经验,但这会有所改变
再次感谢。在javascript中,用
var
声明的局部变量具有函数作用域。这意味着每个函数只有一个局部变量的副本。因此,在第二个代码块中,变量e1
只有一个副本,而for
循环在每次迭代中为其分配不同的值
您可以执行您正在执行的操作,但是完成后,e1
中只有一个值,并且该值将是for
循环的最后一次迭代分配给它的值
我不知道您想要完成什么,但您可以创建一个对象数组,如下所示:
var erd = Joint.dia.erd;
Joint.paper("world", 800, 250);
var x = 0, y = 0;
var objs = [];
for (var i = 0; i < numOfUserDefObjects; i++) {
objs.push(erd.Entity.create({
rect: {
x: x,
y: y,
width: 100,
height: 60
},
label: "Entity"
}));
x += 20;
y -= 40;
}
// objs now contains an array of the created objects
var-erd=接头直径erd;
联合文件(“世界”,800250);
变量x=0,y=0;
var objs=[];
对于(var i=0;i
注意:我还初始化了x和y,修复了使用
var
而不是int
的声明,并在for
循环中正确地递增和递减x和y。您发布的代码中有很多语法错误。啊,是的,我在构建应用程序时会遇到这些错误。现在,我正在计划我的方法,我想先发制人地问这个问题,以便在不久的将来不会绊倒我,但感谢您提供了清晰简洁的答案。