Не могу передать событие в addEventListener: проблема закрытия

Эта задача сводит меня с ума... У меня есть цикл, который добавляет слушателя событий к объекту SVG. Объект представляет собой небольшой круг, и мне нужно добавить события mouseover и mouseout для каждого из 10 кругов.

Моя первая проблема заключается в стандартном замыкании диапазона - поскольку все слушатели добавлены в один и тот же цикл, все они видят одно и то же недопустимое значение переменной цикла. Я могу исправить это, я думаю, но вторая проблема заключается в том, что я должен передать 'event' слушателям, и я не могу найти способ исправить обе эти проблемы одновременно.

Я пробовал различные версии этого:

for(month = 0; month < nMonths; month++) {
   ...
   shape.addEventListener(
     "mouseover", 
     (function(event, index) { popup_on(event, foo, index); })(event, month),
     false);
   group.appendChild(shape);
}

Эта конкретная версия дает мне "событие не определено". popup_on является настоящим обработчиком и должен получать event и текущее значение month. Есть идеи, как я должен это делать? Спасибо.

12
задан EML 3 January 2012 в 15:24
поделиться