Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.04.2010, 23:31   #1
Namolem
Oo
Форумчанин
 
Аватар для Namolem
 
Регистрация: 10.10.2009
Сообщений: 350
По умолчанию addEventListener

http://javascript.pastebin.com/uuH6Hrhv


в конце кода два цикла.
первый создает ссылки из массива subj,
второй добавляет к ним onclick() функцию getSubjectUrl.

эта функция открывает Страницу предмета, используя его id из массива subj.


Почему-то для всех ссылок открывается последний предмет (Электротехника)
Namolem вне форума Ответить с цитированием
Старый 11.04.2010, 15:17   #2
Somebody
Участник клуба
 
Регистрация: 08.10.2007
Сообщений: 1,185
По умолчанию

http://javascript.ru/basic/closure
Я так понимаю, что все создаваемые обработчики используют keyname из [[scope]] window, он не остаётся таким же до момента вызова этих функций, а изменяется в цикле, и после всего этого равен "электротехнике".
А если сделать это в какой-то функции
Код:
function addClickListener(id, keyname)
{
  document.getElementById(id).addEventListener('click', function() {getSubjectUrl(keyname);}, false);
}
...
i=1;
for (keyname in subj){
addClickListener("subject"+i, keyname);
то будет использоваться уже не тот keyname, который в цикле, а тот, который в [[scope]] вызванной для того элемента addClickListener, то есть разный для всех обработчиков.
Somebody вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц