Привет, я прочитал статьи и отличную статью о размерах и замыканиях Роберта Наймана. Однако я не могу заставить это работать. Я пытаюсь назначить событие mouseover различным маркерам, а затем установить iframe src в зависимости от маркера, наведенного поверх. Я получаю печально известную последнюю запись для каждого события мыши. Я играл с ним в течение большей части нескольких дней, и даже «мыслительная жидкость» не помогает :). Любое руководство ценится
для (var i = 0; i
var latlngr = new google.maps.LatLng(mylatd,mylongd); markerno = "marker_"+i; markerarray[i] = new google.maps.Marker({ position: latlngr, map: map, title:myname }); google.maps.event.addListener(markerarray[i], 'mouseover', function(markerno) {return function() { mysrc = 'http://adds.aviationweather.gov/metars/index.php?submit=1&station_ids='+myicao+'&chk_metars=on&chk_tafs=on&std_trans=translated'; alert (mysrc); $('#weather').attr({src: mysrc}); }(markerno) }); }
«Мыслительная жидкость не работает» - ясность мыслей по утрам работает. Я решил это, посмотрев немного повнимательнее на то, что я делал. У меня была проблема с закрытием и я даже не передавал правильную переменную в функцию, которую создавал. Это работает - но спасибо за идеи.
var latlngr = new google.maps.LatLng(mylatd,mylongd); markerarray[i] = new google.maps.Marker({ position: latlngr, map: map, title:myname }); google.maps.event.addListener(markerarray[i], 'mouseover', function(myair) {return function() { mysrc = 'http://adds.aviationweather.gov/metars/index.php?submit=1&station_ids='+myair+'&chk_metars=on&chk_tafs=on&std_trans=translated'; $('#weather').attr({src: mysrc}); };} (myicao)); }
Я думаю, что вы можете решить свою проблему, обернув свой блок в самовыполняющуюся функцию-обертку:
for(var i = 0; i < someLength; i++) (function(i){ // Your internal code here. i will be bound to it's value in the correct context })(i);