max li
max li

Reputation: 2457

combine long javascript into one

I am trying to convert a very long javascript code into one single "for loop: from point A to Point B, what did i do wrong? this is a to call a google map marker, each markers are using a different content and position, but they share same icons, shadows... Point A below:

var mappro1 = new google.maps.Marker({
                    position: map1,
                    map: map,
                    icon: companyImage,
                    shadow: companyShadow,
                    title:"c",
                    zIndex: 4
            });
            var mappro2 = new google.maps.Marker({
                    position: map2,
                    map: map,
                    icon: companyImage,
                    shadow: companyShadow,
                    title:"c",
                    zIndex: 4
            });
            var mappro3 = new google.maps.Marker({
                    position: map3,
                    map: map,
                    icon: companyImage,
                    shadow: companyShadow,
                    title:"c",
                    zIndex: 4
            });
            var mappro4 = new google.maps.Marker({
                    position: map4,
                    map: map,
                    icon: companyImage,
                    shadow: companyShadow,
                    title:"c",
                    zIndex: 4
            });
            var mappro5 = new google.maps.Marker({
                    position: map5,
                    map: map,
                    icon: companyImage,
                    shadow: companyShadow,
                    title:"c",
                    zIndex: 4
            });
            var mappro6 = new google.maps.Marker({
                    position: map6,
                    map: map,
                    icon: companyImage,
                    shadow: companyShadow,
                    title:"c",
                    zIndex: 4
            });
            var mappro7 = new google.maps.Marker({
                    position: map7,
                    map: map,
                    icon: companyImage,
                    shadow: companyShadow,
                    title:"c",
                    zIndex: 4
            });
            var mappro8 = new google.maps.Marker({
                    position: map8,
                    map: map,
                    icon: companyImage,
                    shadow: companyShadow,
                    title:"c",
                    zIndex: 4
            });
            var mappro9 = new google.maps.Marker({
                    position: map9,
                    map: map,
                    icon: companyImage,
                    shadow: companyShadow,
                    title:"c",
                    zIndex: 4
            });

Point B below:

            for ($i=1; $i <10; $i++){

                var $mappros = "mappro" + $i;
                var $mappos = "map" + $i;

                var mappros = new google.maps.Marker({
                    position: $mappos,
                    map: map,
                    icon: companyImage,
                    shadow: companyShadow,
                    title:"$i",
                    zIndex: $i
                });
            };

Upvotes: 0

Views: 81

Answers (1)

Just_Mad
Just_Mad

Reputation: 4077

That is my variant of the loop according to code in A:

var mappros = [];
for (var $i = 1; $i < 10; $i++){
    var mappro = new google.maps.Marker({
        position: "map" + $i,
        map: map,
        icon: companyImage,
        shadow: companyShadow,
        title: "c",
        zIndex: 4
    });
    mappros.push(mappro);
};

So, you'll get an array of mappro to access any of then via the index. If you need a separate name for each mappro you shoud replace the title line with this:

title: $i,

Upvotes: 1

Related Questions