Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Не может сработать onclick из-за приоритета onmouseover и onmouseout (https://javascript.ru/forum/events/3839-ne-mozhet-srabotat-onclick-iz-za-prioriteta-onmouseover-i-onmouseout.html)

Rodion 28.05.2009 15:13

Не может сработать onclick из-за приоритета onmouseover и onmouseout
 
Здравствуйте. Функция вызывается по наведению мышки и по убиранию. Но так же необходимо что бы была реакция на клик. Ни ссылка, ни onclick не могут сработать. Пример работы вот здесь
http://rodya.ru/temp.html

Функция заменяет содержания и клик не делается. Помогите справится с ней. В интернет не отпраляйте, там такого нету.

Kolyaj 28.05.2009 15:49

Зачем вы перерисовываете все при каждом движении курсора?

Rodion 28.05.2009 15:55

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

Kolyaj 28.05.2009 15:59

А перерисовывать-то все зачем? Можно просто фон менять.

Rodion 28.05.2009 16:04

А, ну хотя, сейчас попробую переделать. Спасибо за совет.
UPD: хотя там с background-postion проблемы на сколько я помню в разных браузерах, а я всё же хотел сделать один файл со звёздами.

Rodion 28.05.2009 16:26

Приятно удивлён. Всё работает хорошо, во всех браузерах. Изначально я хотел делать через бэкграунды, но вспомнил что там проблемы с позицией и даже пробовать не стал. Про позицию там значит другого касается. Спасибо ещё раз.

Kolyaj 28.05.2009 16:38

Про позицию это фикс отображения полупрозрачного png в ИЕ.

Pattern 28.05.2009 22:58

<html>
<head>
<style>
.star{
	float: left;
	background: transparent url('images/stars.gif') -180px 0px no-repeat;
	width: 30px;
	height: 30px;
}
.star_active{
	float: left;
	background: transparent url('images/stars.gif') 0px 0px no-repeat;
	width: 30px;
	height: 30px;
}
</style>
<script language="javascript">
var all_stats=6;
var actived=3;
var init=function(){
	function getDiv(i){
		return document.getElementById(i);
	}
	function set_active(){
		var stat=arguments[0].id.substring(1)||actived;
		for(var a=1;a<all_stats+1;a++)
			getDiv('_'+a).className=(a<=stat)?'star_active':'star';
	}
	function restore(){
		for(var a=1;a<all_stats+1;a++)
			getDiv('_'+a).className=(a<=actived)?'star_active':'star';
	}
	function set_stat(o){
		alert('Выбранный рейтинг: '+o.id.substring(1));
	}
	var div=document.createElement('div');
	var child=null;
	for(var a=1;a<all_stats+1;a++){
		child=document.createElement('div');
		with(child){
			id='_'+a;
			onmouseover=function(){set_active(this);};
			onmouseout=function(){restore();};
			onclick=function(){set_stat(this);};
		}
		div.appendChild(child);
	}
	document.body.appendChild(div);
	restore();
}
</script>
</head>
<body onload="init()">
</body>
</html>


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