![]() |
Модераторы: Sardar, Aliance |
![]() ![]() ![]() |
|
aEk |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 19.9.2006 Репутация: нет Всего: нет |
Подскажите, возможно ли менять то, что должно происходить в обработчике двойного нажатия мыши ?
Т.е. например, если делаем первое двойное нажатие, то происходит некое действие и обработчик onDblClick меняется с той целью, чтобы при втором двойном нажатии было выполнено другое действие. Например: <a href="javascript:void(0)" id="zzz" onDblClick="fff1();">test</a> function fff1() { i = document.getElementById("zzz"); alert('that was fff1'); document.getElementById("zzz").ondblclick="fff2();"; } function fff2() { i = document.getElementById("zzz"); alert('that was fff2'); document.getElementById("zzz").ondblclick="fff1();"; } Но смены обработчика не происходит, т.е. он вообще пропадает. |
|||
|
||||
dstorm81 |
|
|||
![]() бездельник ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1178 Регистрация: 18.1.2006 Где: (16RU) Репутация: 20 Всего: 39 |
а про переменные не забыл
Это сообщение отредактировал(а) dstorm81 - 19.9.2006, 17:57 -------------------- на форуме с 8.12.2002 (http://forum.vingrad.ru/index.php?act=ST&f=10&t=4874&st=0#) |
|||
|
||||
aEk |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 19.9.2006 Репутация: нет Всего: нет |
Извини, я не совсем тебя понял... Я имел в виду, что подобная конструкция не срабатывает: document.getElementById("id_of_element").ondblclick="my_func();". Т.е. можно ли вприцнипе менять свойство ondblclick элемента. |
|||
|
||||
vasac |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1060 Регистрация: 4.5.2006 Репутация: 13 Всего: 36 |
|
|||
|
||||
aEk |
|
||||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 19.9.2006 Репутация: нет Всего: нет |
То, что надо. Спасибо ! Но вот еще маленький вопрос: как передавать с параметром ? Т.е. не document.getElementById("zzz").ondblclick= fff2, а document.getElementById("zzz").ondblclick= fff2('test'); Если сделать так: function fff1(t) { t++; alert('that was fff1:'+t); document.getElementById("zzz").ondblclick=fff2(t); } function fff2(t) { t++; alert('that was fff2'+t); document.getElementById("zzz").ondblclick=fff1(t); } То из fff1 после document.getElementById("zzz").ondblclick=fff2(t) начинает сразу выполняться fff2. А в fff2 соотвественно после document.getElementById("zzz").ondblclick=fff1(t) начинает сразу работать fff1. В данном случае получается зацикливание. Но дело не в самом зацикливании и как его избежать, а как переопределить свойство ondblclick без вызова той функции с параматром. Если параметр не передавать, а писать просто document.getElementById("zzz").ondblclick= fff2, то все происходит так, как должно быть. |
||||
|
|||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 10 Всего: 260 |
дык document.getElementById("zzz").ondblclick= fff2('test'); - это ты сразу же вызываешь функцию, а результат уже записываешь в ondblclick. Можно реализовать так:
document.getElementById("zzz").ondblclick= function() {fff2('test');} Вот только анонимные функции, насколько мне известно, вызывают утечку памяти в IE... |
|||
|
||||
aEk |
|
||||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 19.9.2006 Репутация: нет Всего: нет |
Да, что-то я совсем ерунду привел.
Это да. В общем, наверно лучше сделать через дополнительные внешние переменные все в одной функции, без смены непосредственно обработчика ondblclick. |
||||
|
|||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 10 Всего: 260 |
с утечкой памяти всё решаемо:
-- либо ссылаешься на неанонимную функцию(document.getElementById("zzz").ondblclick= some_function;); конечно, контекст вызова копироваться не будет, так пойдёт только если ты планировал параметрами использовать константы, либо будешь обращаться к глобальным объектам -- когда польза в объекте исчезнет(например, по выгрузке страницы: onunload), записываешь в ячейку null(document.getElementById("zzz").ondblclick= null;); после этого беда с анонимными функциями - не беда вовсе ![]() |
|||
|
||||
aEk |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 19.9.2006 Репутация: нет Всего: нет |
так я и сделал, с обращением к глобальным переменным, просто чуток строк кода пришлось добавить |
|||
|
||||
![]() ![]() ![]() |
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |