Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Противоречие Click и Mouseover
Форум программистов > Интернет и сети > Web-программирование > HTML, CSS, XML, JavaScript
Oflashp
Господа, возникла проблема:
Вот кусок кода, он рабочий сверху и снизу, поэтому выкладываю кусок(заместо трёх точек соотвественно н-ная функция:
...
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 реакции нет. Комментирую
...
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. Поэтому если можно пример.
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. Вот тебе функция добавления событий для всех браузеров:
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";});
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2009 IPS, Inc.