Замыкание в цикле 
		
		
		
		Здравствуйте! 
	Скажите пожалуйста правильный ли такой код? Cломал уже голову c этим замыканием ) Код рабочий, но пока ничего лучшего не получилось. Мне нужно чтобы в function(){alert(i)} записывалось текущее значение "i" 
for(var i=0; i < 2; i++){
	func(i);
	function func(i){
		placemark[i].events.add('click', function(){alert(i)} );
	}
}
Спасибо!  | 
	
		
 HJ90, 
	:write: 
for (var i = 0; 2 > i; i++)(function (a) {
    placemark[a].events.add("click", function () {
        alert(a)
    })
})(i);
 | 
	
		
 рони, спасибо! 
	Но здесь тоже 2 раза создается анонимная функция. Это плохо если нужно перебирать большой цикл... Или я не прав?  | 
	
		
 Цитата: 
	
 тогда создание отдельной функции для него - капля в море, нет смысла заморачиваться.  | 
	
		
 Цитата: 
	
 Да, это метка на яндекс карте. Обычно будет создаваться 10-20 меток, Но возможна ситуация когда будет и 1000.  | 
	
		
 попробуй такой вариант, вдруг прокатит: 
	
function pmClick() {
    alert(this.value_i);
}
for(var i=0; i < 2; i++){
    placemark[i].value_i = i;
    placemark[i].events.add('click', pmClick );
}
т.е. к каждой метке прикрепить значение i, потом в хендлере получить его как-то через this  | 
	
		
 Яростный Меч, не работает пример...  
	Я вот тоже так хотел. Но внутри function уже не видно локальную "i" Оно берет значение со scope, а там i = 1  | 
	
		
 На хабре есть такой пример. 
	Только у меня он почему-то не работает. http://habrahabr.ru/post/137318/ 
function addEvents2(divs) {
    var f=function f(){alert(this.$i)};
    for(var i=0; i<divs.length; i++) {	
        divs[i].innerHTML = i;
        divs[i].$i=i;
        divs[i].onclick = f;
    }
}
 | 
	
		
 HJ90, 
	внутри обработчика должен быть способ достать тот элемент, на котором случился клик. вот, покури http://api.yandex.ru/maps/doc/jsapi/...pts/events.xml скорее всего, e.get('target') - оно самое e - объект, который передается первым параметром в хендлер.  | 
	
		
 Яростный Меч 
	Да нет, это не то) e.get ('target') вернет ссылку на метку по которой кликнули а мне здесь нужно создать массив меток и присвоить им эвенты Но всеравно спасибо! :)  | 
| Часовой пояс GMT +3, время: 14:17. |