Клуб API Карт

Placemark.events.add в цикле

Пост в архиве.

Всем привет. Пытаюсь в цикле вывести на карту метки и повесить событие onclick.

 

        function make_add ()
        {
       
        lt [0] = 30.684581;
        lt [1] = 30.688581;
       
        lat [0] = 50.167394;
        lat [1] = 50.169394;
        //var d = 0;
       
       
        for (d=0; d<=1; d++)
             {
       
       
       
         CarMark [d] = new ymaps.Placemark([lt [d], lat [d]], {iconContent: '', balloonContent: ""},
        {iconImageHref: "ico_car.png", iconImageSize: [30, 40]});

       
CarMark[d].events.add('click', function () {
                                 alert ('sss' + d);
                                    });
       
        map.geoObjects.add(CarMark [d]);
       

                 }

 

  

Все отрабатывает нормально. Но при нажатии на каждую метку всегда выводиться только sss2, хотя фактически d никогда не равно 2 :-/

 

Как такое может быть?... буду признателен за помощь! Заранее спасибо!

1 комментарий

Всё правильно, переменная "d" в обработчике события всегда будет ссылаться на последнее значение, присвоенное ей в цикле "for".

Рекомендую прочитать книжку по javascript, например, Фленагана.

Или хотя бы у И.Кантора на javascript.ru прочитайте про область видимости и замыкания.