2010-06-04 7 views
0

J'essaie de définir des variables dans une boucle. Je vais laisser tomber le code ici et puis essayer d'expliquer quelques-uns:Comment puis-je définir des variables dans une boucle for en javascript?

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

Je voudrais créer une liste de variables qui doivent être nommés chanter un tableau déjà défini (le tableau de noms est appelé noeuds le code ci-dessus). Donc, dans cette boucle, je voudrais définir une nouvelle variable "this [node + k]" pour créer une nouvelle variable google.maps.marker.

Le but est de faire un tas de marqueurs avec des pop-ups sur une carte google personnalisée pour certains logiciels de gestion que j'essaie d'écrire.

Je suis sûr qu'il doit y avoir un moyen de le faire parce que j'ai vu un autre code pour définir les variables dans une boucle (Ce que je ne peux plus trouver ... :(). Cependant, les noms des variables défini dans la boucle n'a pas été pris à partir d'un autre tableau (comme le sont les miens)

Je ne veux pas créer var1, var2, var3, j'ai vu comment faire cela.Je veux créer ces variables en utilisant les noms d'un Je m'excuse si la question n'est toujours pas claire mais merci pour l'aide jusqu'à présent.J'ai le sentiment que le code google maps est peut-être déroutant, alors voici la façon originale de définir le google cartes marqueur variable:

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

Le code que j'ai en ce moment répète simplement ce code 20 fois et plus pour définir toutes les variables différentes. Je veux essayer de tout mettre dans une boucle for et définir les variables en utilisant les noms d'un tableau.

+0

pouvez-vous expliquer ce mieux? Je n'ai aucune idée de ce que vous essayez vraiment d'accomplir. c'est à dire. Qu'est-ce qui ne fonctionne pas avec votre code actuel? – brad

+0

Vous voulez créer dynamiquement X nombre de variables? Pas possible. –

+0

http://groups.google.com/group/google-maps-js-api-v3/browse_thread/thread/30b3f94096ae3e6b/7952f688abc30c69?lnk=raot&fwc=1&pli=1 Je pensais que j'ajouterais ce lien à tous ceux qui est intéressé, ceci explique comment créer beaucoup de ces marqueurs de carte à l'intérieur d'une boucle avec toutes les informations comme les coordonnées latlong, les noms, etc. stockés dans différents tableaux. – Oarcinae

Répondre

0

Vous pouvez faire ce que vous décrivez si vous créez une variable en dehors de votre boucle, puis mettez vos nouvelles créations en elle. Quelque chose comme ceci:

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

Cela utilise des touches numériques sur le tableau de cartes pour garder une trace des éléments. Vous pouvez faire des cartes un objet à la place et utiliser des touches de texte si c'est mieux pour votre scénario.

+0

Vous rock! Merci beaucoup! C'est génial de compresser 200 lignes de code jusqu'à environ 10 ou 20 ... – Oarcinae

4

Dans votre for loop, vous devez utiliser des points-virgules au lieu de virgules:

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

Cette faute de frappe a été corrigée depuis longtemps dans la question. –

1

Je ne sais pas ce que vous essayez de faire, mais vous pouvez essayer:

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

Je crois que cette réponse est fondamentalement la même que celle ci-dessous, mais je ne peux pas vérifier les deux pour avoir raison :) Mais merci pour l'aide les gars ! – Oarcinae