Как я могу определить переменные в цикле for в JavaScript? - PullRequest
0 голосов
/ 05 июня 2010

Я пытаюсь определить переменные в цикле. Я опущу код здесь, а затем попробую объяснить еще немного:

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. Я видел, как это сделать. Я хочу создать эти переменные, используя имена из массива.

Я прошу прощения, если вопрос все еще не ясен, но спасибо за помощь до сих пор. У меня есть ощущение, что код Google Maps может сбить с толку и ситуацию. Итак, вот оригинальный способ определения переменной маркера карт Google:

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 и определить переменные, используя имена из массива.

Ответы [ 3 ]

4 голосов
/ 05 июня 2010

В вашем для цикла вы должны использовать точку с запятой вместо запятой:

for (var k=0; k<nodes.length; k++){
     // ...
}
1 голос
/ 10 июня 2010

Я не уверен, что вы пытаетесь сделать, но вы можете попробовать:

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 голосов
/ 10 июня 2010

Вы можете делать то, что вы описываете, если вы создаете переменную вне вашего цикла 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"
    });
}

Использует цифровые клавиши в массиве карт для отслеживания элементов.Вместо этого вы можете сделать карты объектом и использовать текстовые ключи, если это лучше для вашего сценария.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...