2010-06-04 64 views
0

我想在一个循环内定义变量。我会在这里放下代码,然后试着解释一些:如何在javascript中的for循环中定义变量?

for (var k=0; k<nodes.length; k++){ 
    this[node+k] = new google.maps.Marker({ 
     position: new google.maps.LatLng(array1[k], array2[k]), 
     map: map, 
     title: node[k], 
     icon: "some image file" 
    }); 
} 

我想创建的将被命名变量列表唱已定义的数组(名称的数组被称为节点上面的代码)。所以在这个循环中,我想定义一个新变量“this [node + k]”来创建一个新的google.maps.marker变量。

其目的是为我想写的一些管理软件在一个自定义Google地图上制作一堆带有弹出窗口的标记。

我确定必须有一些方法来做到这一点,因为我看到了其他代码来定义循环中的变量(当然,我不能再找到...... :()。但是,变量的名称是定义在循环中并没有从另一个数组中取出(因为我的是)

我不想创建var1,var2,var3,我看到了如何做到这一点。 array。

我很抱歉,如果问题仍然不清楚,但感谢您的帮助到目前为止,我有一种感觉,它可能是谷歌地图代码混淆的情况太多,所以这里是最初的方式来定义谷歌地图标记变量:

var NAME1= new google.maps.Marker({ 
    position: new google.maps.LatLng(29.70600, -95.28159), // coordinates 
    map: map, 
    title:"NAME1", // marker title 
    icon: "http://127.0.0.1/public_html/tower.gif" // icon 
}); 

我现在的代码只是重复此代码20+次来定义所有不同的变量。我想尝试把这一切都放到for循环中,并使用数组中的名称定义变量。

+0

你能解释这更好的?我不知道你真的想达到什么。即。什么不适合你当前的代码? – brad 2010-06-09 19:41:36

+0

你想动态创建X个变量?不可能。 – 2010-06-10 17:38:35

+0

http://groups.google.com/group/google-maps-js-api-v3/browse_thread/thread/30b3f94096ae3e6b/7952f688abc30c69?lnk=raot&fwc=1&pli=1 我想我会将此链接添加到任何人感兴趣,这解释了如何在循环内创建许多这样的地图标记,其中包含存储在不同数组中的latlong坐标,名称等所有信息。 – Oarcinae 2010-06-16 20:10:35

回答

0

你可以做你的描述,如果你的外部创建一个变量循环,然后把你的新作品了进去。类似这样的:

var maps = []; 
for (var k=0; k<nodes.length; k++){ 
    maps[k] = new google.maps.Marker({ 
     position: new google.maps.LatLng(array1[k], array2[k]), 
     map: map, 
     title: node[k], 
     icon: "some image file" 
    }); 
} 

这使用地图数组上的数字键来跟踪项目。您可以将地图制作为对象,并使用文本键(如果这对您的场景更好)。

+0

你摇滚!非常感谢!将200行代码压缩到大约10或20,感觉很好... – Oarcinae 2010-06-16 19:29:55

4

在你for loop你应该使用分号,而不是逗号:

for (var k=0; k<nodes.length; k++){ 
    // ... 
} 
+0

这个错字在这个问题上已经修正了很久。 – 2015-03-29 17:41:45

1

我不知道你正在尝试做的,但你可以尝试:

var names = ["name1", "name2"]; 
var markers = new Array(); 
for (var k=0; k<names.length; k++){ 
    markers[k] = new google.maps.Marker({ 
     position: new google.maps.LatLng(array1[k], array2[k]), 
     map: map, 
     title: names[k], 
     icon: "some image file" 
    }); 
} 
+0

我相信这个答案基本上和下面的答案一样,但是我不能检查这两个都是对的:)但是感谢帮助的人们! – Oarcinae 2010-06-16 19:30:56