[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: onclick VS onmouseover
Игорь_Vasinsky
вообщем суть такая:

есть ячейка таблички:

<td onclick="" onmouseout="hover_m0()" onmouseover="hover_mc0()"  id="mood0" class="block_m0" width="32px" height="32px"></td>


прописаны функции:

function hover_m0(){
document.getElementById("mood0").className = "block_m0";
}
function hover_mc0(){
document.getElementById("mood0").className = "block_mc0";
}


работает так: при наведении на ячейку - меняеся её класс и как курсор уходит - класс возвращается.

теперь хочу чтоб при onclick оставался тот класс - который ставится при наведении мышой, но по логике потом происходит событие onmouseout - и класс опять блин меняется.

Есть какя нить реализация?



Спустя 12 минут, 2 секунды (17.01.2011 - 15:25) Игорь_Vasinsky написал(а):
нашёл вариант с :hover + onclick - тады работает, не знаю как другие браузеры... IE работает

Спустя 3 минуты, 8 секунд (17.01.2011 - 15:28) maurise написал(а):
Как вариант, если не будет работать, можно создать 3-й класс, который по стилю совпадает с 1-м, но добавить к его значениям параметр !important

Спустя 8 минут, 44 секунды (17.01.2011 - 15:37) Игорь_Vasinsky написал(а):
я на этом :hover + onclick - остановился

Спустя 7 минут, 33 секунды (17.01.2011 - 15:45) sergeiss написал(а):
Цитата (Игорь_Vasinsky @ 17.01.2011 - 16:13)
теперь хочу чтоб при onclick оставался тот класс - который ставится при наведении мышой, но по логике потом происходит событие onmouseout - и класс опять блин меняется.

Есть какя нить реализация?

Можно еще так сделать. Делаешь переименную, котороя изначально имеет величину, например, true.
Затем, внутри функции, вызываемой из обработчика onclick, выставляем величину той переменной в false.
Внутри обработчика onmouseout проверяем эту переменную, если она == false, то только выставляем её в true и выходим. Иначе (если уже == true) мы знаем, что клика не было "только что" и поэтому можем вести обработку.

Этот подход получится более универсальный, т.к. можно не только менять классы для объектов, но и любую другую обработку проводить.

Спустя 1 час, 29 минут, 27 секунд (17.01.2011 - 17:14) ApuktaChehov написал(а):
sergeiss придется создавать глобальные переменные - а это память.

Самый простейший вариант. Делаешь 3 класса.

Изначально задан первый класс. При наведении задается второй, а при клике третий.
Что бы при onmouseout класс не менялся снова, в функции нужно проверить текущий класс объекта, и если он не трети(т.е. еще не нажимали) тогда меняем класс.

Спустя 27 минут, 9 секунд (17.01.2011 - 17:41) sergeiss написал(а):
Цитата (ApuktaChehov @ 17.01.2011 - 18:14)
придется создавать глобальные переменные - а это память.

Одна глобальная переменная на все подобные хрени на странице - это много памяти????? "Не смешите мои подковы!" smile.gif
Тем более, что моё решение позволяет не только классы менять, но и много чего другого делать внутри этих функций.

Спустя 40 минут, 13 секунд (17.01.2011 - 18:22) Игорь_Vasinsky написал(а):
всем спасибо.
решил пока с hover оставить - 2 класса 1 функция на 1 элемент

Спустя 1 минута, 11 секунд (17.01.2011 - 18:23) Игорь_Vasinsky написал(а):
Цитата
Изначально задан первый класс. При наведении задается второй, а при клике третий.


но как мыша уходитс объекта - работает функция с 2м классом

Спустя 2 часа, 41 минута, 56 секунд (17.01.2011 - 21:05) ApuktaChehov написал(а):
sergeiss - вспылил да. Признаюсь.
Мой вариант исключает вмешательство из вне.
В последнее время я все пытаюсь сделать независимым, почему-то. dry.gif

Игорь_Vasinsky - еще раз и по русски


_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.