Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   Почему не работает a.onclick = b.click? (https://javascript.ru/forum/css-html/29772-pochemu-ne-rabotaet-onclick-%3D-b-click.html)

Дроюнер 10.07.2012 18:37

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

a.onclick = b.click;


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

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


Никак не могу понять, почему так происходит.

vadim5june 10.07.2012 19:09

a.onclick = b.click;
вы этой строкой присваиваете
обработчику а значение функции b.click

Дроюнер 10.07.2012 19:13

Я же скобок не поставил, значит там не значение, а указатель должен присваиваться, разве нет?

vadim5june 10.07.2012 19:17

Цитата:

Сообщение от Дроюнер (Сообщение 187822)
Я же скобок не поставил, значит там не значение, а указатель должен присваиваться, разве нет?

b.click-это функция
указатель бывает на объекты а функции присваиваются

oneguy 10.07.2012 19:18

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

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

oneguy 10.07.2012 19:19

Цитата:

Сообщение от vadim5june
b.click-это функция
указатель бывает на объекты а функции присваиваются

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

Дроюнер 10.07.2012 19:23

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


Часовой пояс GMT +3, время: 16:38.