![]() |
Модераторы: Sardar, Aliance |
![]() ![]() ![]() |
|
check |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 610 Регистрация: 3.4.2006 Репутация: нет Всего: 23 |
Имеется какой-то DOM-элемент с id="main". У меня это <span>.
Мы хотим динамически навесить на него обработчики нескольких событий. Если просто в цикле присваивать функцию соответствующему свойству-обработчику
то при клике по span-у нам почему-то скажут "Спасибо за ваш keypress" А вот если то же самое делать в анонимной функции
то сообщение будет соответствовать событию. Я понимаю, что в первом случае item является глобальной, но не понимаю, почему это дает такой результат. |
||||
|
|||||
check |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 610 Регистрация: 3.4.2006 Репутация: нет Всего: 23 |
Кажется понял. В замкнутой функции, которая присваивается obj["on" + item], доступна именно переменная item, а не её значение на текущей итерации. Если мы создаем локальную область видимости оборачивая эту функцию другой анонимной функцией, то текущая итерация становится областью видимости, в которой замыкание видит переменную.
Если этого не сделать, то всем obj["on" + item] присвоится функция, в которой видна item c её последним значением. Это сообщение отредактировал(а) check - 15.12.2008, 15:03 |
|||
|
||||
![]() ![]() ![]() |
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |