Противоречие Click и Mouseover

Тема в разделе "HTML, CSS, XML, JavaScript", создана пользователем Oflashp, 31 июл 2007.

Статус темы:
Закрыта.
  1. Oflashp

    Oflashp Гость

    Господа, возникла проблема:
    Вот кусок кода, он рабочий сверху и снизу, поэтому выкладываю кусок(заместо трёх точек соотвественно н-ная функция:
    Код (Text):
    ...
    obj_menu.addEventListener ('click', ... , true); // Opera, FF, NN
    obj_menu.addEventListener ('mouseover', ... ,true); // Opera, FF, NN
    obj_menu.addEventListener ('mouseout', ..., true); // Opera, FF, NN
    ...
    Работает только mouseover и mouseout. На событие click реакции нет. Комментирую
    Код (Text):
    ...
    obj_menu.addEventListener ('click', ... , true); // Opera, FF, NN
    //obj_menu.addEventListener ('mouseover', ... ,true); // Opera, FF, NN
    //obj_menu.addEventListener ('mouseout', ..., true); // Opera, FF, NN
    ...
    запускаю - click пашет.
    Пробовал переставлять местами(!да - тупость знаю, но когда нет решений приходится тыкать)
    Собственно с логической точки зрения, я понимаю, что кликает юзер или нет, в любом случае будет выполняется mouseover. Получается перекрытие click.
    Как сделать, так, чтобы при наводе мышки на обьект работала mouseover, при клике = click
    Заранее благодарю за помощь, не первый час уже парюсь с проблемой.
    P.S: К сожалению в JS лох, я больше PHP. Поэтому если можно пример.
     
  2. sir Aurum

    sir Aurum Гость

    Все должно работать, наверное где-то внутри вызываемой функции ты переопределяешь прописанный onclick event

    вот рабочий пример:
    HTML:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <html>
    <head>
    <title>Test</title>
    </head>

    <body>
    <span id="qqq">wwwwwwwwww</span>
    <div id="watch"></div>
    <script>
    debug = function(str){
    document.getElementById('watch').innerHTML = str;
    }
    var obj = document.getElementById('qqq');
    obj.addEventListener ('click', function(){debug('click')}, true); // Opera, FF, NN
    obj.addEventListener ('mouseover', function(){debug('mouseover')},true); // Opera, FF, NN
    obj.addEventListener ('mouseout', function(){debug('mouseout')}, true); // Opera, FF, NN
    </script>


    </body>
    </html>
    если бы я внутри функции debug переопределил или удалил onclick для нашего спана, то он бы не отрабатывал. Так, наверное, происходит у тебя.

    P.S. Вот тебе функция добавления событий для всех браузеров:
    Код (Text):
    addEvent = function(obj, type, fn){
    if(obj.addEventListener){
    obj.addEventListener(type, fn, false);
    return true;
    }else if(obj.attachEvent){
    var r = obj.attachEvent( "on"+type, fn );
    return r;
    }
    };

    // пример использования
    addEvent(obj, "mouseover", function(){this.style.color = "Red";});
     
Загрузка...
Похожие Темы - Противоречие Click Mouseover
  1. dypel
    Ответов:
    0
    Просмотров:
    1.233
  2. bobo
    Ответов:
    2
    Просмотров:
    1.516
  3. skulldj
    Ответов:
    0
    Просмотров:
    1.532
  4. TimeDontWait
    Ответов:
    8
    Просмотров:
    3.961
  5. susinmn
    Ответов:
    3
    Просмотров:
    2.332
Статус темы:
Закрыта.

Поделиться этой страницей