这可能是一个非常基本的问题,但我真的不明白发生了什么。
如果我在Javascript中有一些var
,如下所示:
var cube1 = paper.rect(200, 200, 0, 0);
var cube2 = paper.rect(300, 200, 0, 0);
...
转到cube99
。
要捕捉我在循环中执行以下操作的所有立方体:
for(var i = 0; i < 100; i++) {
cube+i.attr(fill: '#000');
console.log(i);
}
但是它给我一个未定义的错误,即#34;立方体不可用&#34;。
为什么会这样?
答案 0 :(得分:5)
假设您的变量是全局变量,那么它们就是window
对象的属性。您可以使用bracket notation:
window['cube'+i].attr(fill: '#000');
但更好的做法是将所有多维数据集存储在一个数组中:
var cubes = [];
cubes.push(paper.rect(200, 200, 0, 0));
...
for(var i = 0; i < 100; i++) {
cubes[i].attr(fill: '#000');
...
}
答案 1 :(得分:1)
您应该使用包含所有信息的单个数组,而不是创建大量变量:
var cubes = [
paper.rect(200, 200, 0, 0), // cubes[0]
paper.rect(300, 200, 0, 0), // cubes[1]
// ...
paper.rect(300, 200, 0, 0) // cubes[99]
];
for(var i = 0, len = cubes.length; i < len; ++i) {
cubes[i].attr(fill: '#000');
console.log(i);
}
注意强>:
cubes[i].attr(fill: '#000');
无效JS。也许你应该使用
cubes[i].setAttribute('fill', '#000');