Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 10.07.2012, 18:37
Новичок на форуме
Отправить личное сообщение для Дроюнер Посмотреть профиль Найти все сообщения от Дроюнер
 
Регистрация: 10.07.2012
Сообщений: 5

Почему не работает a.onclick = b.click?
Есть два HMTL-элемента, у одного из них есть обработчик onclick, а у второго функция click. Пытаюсь сделать, чтобы при нажатии на первый элемент происходило нажатие на второй:

a.onclick = b.click;


Это не работает, хотя так получается:

a.onclick = function () {
    b.click();
}


Никак не могу понять, почему так происходит.
Ответить с цитированием
  #2 (permalink)  
Старый 10.07.2012, 19:09
Аватар для vadim5june
Студент
Отправить личное сообщение для vadim5june Посмотреть профиль Найти все сообщения от vadim5june
 
Регистрация: 30.04.2012
Сообщений: 1,113

a.onclick = b.click;
вы этой строкой присваиваете
обработчику а значение функции b.click
Ответить с цитированием
  #3 (permalink)  
Старый 10.07.2012, 19:13
Новичок на форуме
Отправить личное сообщение для Дроюнер Посмотреть профиль Найти все сообщения от Дроюнер
 
Регистрация: 10.07.2012
Сообщений: 5

Я же скобок не поставил, значит там не значение, а указатель должен присваиваться, разве нет?
Ответить с цитированием
  #4 (permalink)  
Старый 10.07.2012, 19:17
Аватар для vadim5june
Студент
Отправить личное сообщение для vadim5june Посмотреть профиль Найти все сообщения от vadim5june
 
Регистрация: 30.04.2012
Сообщений: 1,113

Сообщение от Дроюнер Посмотреть сообщение
Я же скобок не поставил, значит там не значение, а указатель должен присваиваться, разве нет?
b.click-это функция
указатель бывает на объекты а функции присваиваются
Ответить с цитированием
  #5 (permalink)  
Старый 10.07.2012, 19:18
Профессор
Отправить личное сообщение для oneguy Посмотреть профиль Найти все сообщения от oneguy
 
Регистрация: 31.05.2012
Сообщений: 396

Если вы пишете
a.onclick = b.click;

то функции b.click передаётся a в качестве this. А нужно передать b. Поэтому попробуйте так:
a.onclick=b.click.bind(b);

Последний раз редактировалось oneguy, 10.07.2012 в 19:24.
Ответить с цитированием
  #6 (permalink)  
Старый 10.07.2012, 19:19
Профессор
Отправить личное сообщение для oneguy Посмотреть профиль Найти все сообщения от oneguy
 
Регистрация: 31.05.2012
Сообщений: 396

Сообщение от vadim5june
b.click-это функция
указатель бывает на объекты а функции присваиваются
В Джаваскрипте функции тоже объекты. При присваивании функции ёё код не копируется, а присваивается ссылка на структуру данных, содержащую, помимо прочего, код функции.

Последний раз редактировалось oneguy, 10.07.2012 в 19:48.
Ответить с цитированием
  #7 (permalink)  
Старый 10.07.2012, 19:23
Новичок на форуме
Отправить личное сообщение для Дроюнер Посмотреть профиль Найти все сообщения от Дроюнер
 
Регистрация: 10.07.2012
Сообщений: 5

Oneguy, cпасибо, вопрос снят.

Последний раз редактировалось Дроюнер, 10.07.2012 в 19:33.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
почему не работает два автокомплита вместе mcavalon AJAX и COMET 3 23.12.2011 11:56
Почему это работает? (инклуд JS в JS) Василий Б. Общие вопросы Javascript 4 11.06.2010 12:41
Помогите с javascript (Почему не работает) remus Оффтопик 9 09.06.2010 11:18
Почему не работает код? JSprog Общие вопросы Javascript 4 16.08.2009 14:39
Почему не работает функция? Vitaly jQuery 10 31.07.2009 17:01