2010-04-14 3 views
0

У меня есть следующий цикл внутри функции init(); который выполняется «onload», у меня есть traouble, связывающий событие mouseover для каждого маркера, предупреждение i всегда возвращает значение окончательного цикла/итерации (228)?Открытые многократные события наведения мыши для нескольких маркеров

for(i=0; i<document.getElementById('departureSelect').options.length; i++){ 
      var coords = eval(document.getElementById('departureSelect').options[i].value); 
      if(i==0){ 
       window['popup'+i] = new OpenLayers.Marker(new OpenLayers.LonLat(coords[0], coords[1]),icon); 
      }else{ 
       window['popup'+i] = new OpenLayers.Marker(new OpenLayers.LonLat(coords[0], coords[1]),icon.clone()); 
      } 

      window['z'+i] = new OpenLayers.Popup.Anchored(coords[2], 
       new OpenLayers.LonLat(coords[0], coords[1]), 
       new OpenLayers.Size(0,0), 
       '<span class="country-label">' + coords[2] + '</span>', 
       icon, 
       false 
      ); 
      window['z'+i].autoSize = true; 
      window['z'+i].setBorder('1px solid #888'); 
      map.addPopup(window['z'+i]); 
      window['z'+i].hide(); 

      window['popup'+i].events.register('mouseover', window['popup'+i], function(e){ 
       alert(i); // only returns final iteration of i (228)????? 

      }); 

      countries.addMarker(window['popup'+i]); 


    } 

ответ

1

После многих часов мне удалось найти решение:

window['popup'+i].events.register('mouseover', window['z'+i], function(e){ // pass through popup object 
       this.show(); // show popup 

});