Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Onclick, возвращающий объект (https://javascript.ru/forum/events/17575-onclick-vozvrashhayushhijj-obekt.html)

pauluss 25.05.2011 11:10

Onclick, возвращающий объект
 
Попался такой код (в чужом проекте)
...
<li onclick="return {owner_id: 1, company_id: 2}" class="item"><span class="b-ucompany">Mega</span></li>
...


Что-то я подвис в попытке понять этот onclick. Куда он объект-то возвращает??
Тут есть ещё какой-то суровый фреймворк, вроде самописный, в котором я не разобрался.
Подскажите плизь, знающие люди, как вообще можно что-то надстроить, чтоб такое хоть как-то заюзать?

Должен же быть какой-то обработчик в который, по идее, приходит этот объект при клике. Как его создать, может кто нибудь примерчик привести?

Спасибо.

Sweet 25.05.2011 11:22

Это пример "как делать не надо". Работает так:
<li onclick="return 'value';" id="item">Mega</li>
<script>
alert( document.getElementById("item").onclick() );
</script>
То есть onclick используется как хранилище. А при срабатывании события, объект возвращается в никуда. Короче, на редкость через одно место сделано.

nikita.mmf 25.05.2011 12:03

Не соглашусь. Это делается прежде всего как независимое хранилище данных, то есть передача данных, мне это кажется очень удобно, так как на разных страницах можно вызывать одну и ту жу функцию с разными аргументами.

Лучше почитать вот здесь http://sreznikov.blogspot.com/search/label/JavaScript

pauluss 25.05.2011 12:46

Всё понял, спасибо. Интересное решение. Хотя использование события не по назначению смущает.
Но это уже вопрос скорее религиозный. Кому-то нравится такая гибкость, а по мне так это скорее бардак. Дело привычки наверное.

hogart 26.05.2011 17:58

Способ передачи данных из разметки или от сервера джаваскриптовому компоненту.

Достоинства — компактная запись, не нужно вызывать eval, работает абсолютно везде и довольно быстро.
Недостатки — пуристы сходят с ума:)

По факту, в современном JS этот атрибут не используется по исконному назначению. С сугубо прагматической точки зрения — это удобно.


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