【问题标题】:How can I define variables in a for loop in javascript?如何在 javascript 的 for 循环中定义变量?
【发布时间】:2010-06-04 21:13:57
【问题描述】:

我正在尝试在循环中定义变量。我将代码放在这里,然后尝试解释更多:

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 变量。

目的是为我正在尝试编写的一些管理软件在自定义谷歌地图上制作一堆带有弹出窗口的标记。

我确定必须有某种方法可以做到这一点,因为我看到了其他用于在循环中定义变量的代码(当然我再也找不到... :( )。但是,正在定义的变量的名称在循环中没有取自另一个数组(就像我的一样)。

我不想创建 var1、var2、var3。我看到了如何做到这一点。我想使用数组中的名称创建这些变量。

如果问题仍然不清楚,我深表歉意,但感谢到目前为止的帮助。我有一种感觉,这可能是谷歌地图代码也混淆了这种情况。所以这里是定义谷歌地图标记变量的原始方法:

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 循环中,并使用数组中的名称定义变量。

【问题讨论】:

  • 你能更好地解释一下吗?我不知道你真正想要达到什么目的。 IE。您当前的代码有什么问题?
  • 你想动态创建X个变量吗?不可能。
  • groups.google.com/group/google-maps-js-api-v3/browse_thread/… 我想我会将此链接添加给任何感兴趣的人,这解释了如何在一个循环中创建许多这些地图标记,其中存储了所有信息,如 latlong 坐标、名称等不同的数组。

标签: javascript variables for-loop


【解决方案1】:

在您的for loop 中,您应该使用分号而不是逗号:

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

【讨论】:

    【解决方案2】:

    我不确定您要做什么,但您可以尝试:

    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"
        });
    }
    

    【讨论】:

    • 我相信这个答案与下面的答案基本相同,但我无法检查两者是否正确:) 但是感谢大家的帮助!
    【解决方案3】:

    如果您在 for 循环之外创建一个变量,然后将您的新创建放入其中,您就可以按照您的描述进行操作。像这样的:

    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"
        });
    }
    

    使用 maps 数组上的数字键来跟踪项目。如果这更适合您的场景,您可以将地图改为对象并使用文本键。

    【讨论】:

    • 你摇滚!非常感谢!将 200 行代码压缩到大约 10 或 20 行感觉很棒……
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-05
    • 2022-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多