Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 28.05.2009, 15:13
Новичок на форуме
Отправить личное сообщение для Rodion Посмотреть профиль Найти все сообщения от Rodion
 
Регистрация: 28.05.2009
Сообщений: 4

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

Функция заменяет содержания и клик не делается. Помогите справится с ней. В интернет не отпраляйте, там такого нету.
Ответить с цитированием
  #2 (permalink)  
Старый 28.05.2009, 15:49
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Зачем вы перерисовываете все при каждом движении курсора?
Ответить с цитированием
  #3 (permalink)  
Старый 28.05.2009, 15:55
Новичок на форуме
Отправить личное сообщение для Rodion Посмотреть профиль Найти все сообщения от Rodion
 
Регистрация: 28.05.2009
Сообщений: 4

Это как бы рейтинг ставить. Сначала высвечивается сколько он есть на самом деле. Потом когда сам хочешь поставить, водишь мышкой и выбираешь сколько зазвездить. Когда убираешь мышь, восстанавливается значение по умолчанию. Клик нужен что бы отправить оценку на сервер.
Ответить с цитированием
  #4 (permalink)  
Старый 28.05.2009, 15:59
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

А перерисовывать-то все зачем? Можно просто фон менять.
Ответить с цитированием
  #5 (permalink)  
Старый 28.05.2009, 16:04
Новичок на форуме
Отправить личное сообщение для Rodion Посмотреть профиль Найти все сообщения от Rodion
 
Регистрация: 28.05.2009
Сообщений: 4

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

Последний раз редактировалось Rodion, 28.05.2009 в 16:08.
Ответить с цитированием
  #6 (permalink)  
Старый 28.05.2009, 16:26
Новичок на форуме
Отправить личное сообщение для Rodion Посмотреть профиль Найти все сообщения от Rodion
 
Регистрация: 28.05.2009
Сообщений: 4

Приятно удивлён. Всё работает хорошо, во всех браузерах. Изначально я хотел делать через бэкграунды, но вспомнил что там проблемы с позицией и даже пробовать не стал. Про позицию там значит другого касается. Спасибо ещё раз.
Ответить с цитированием
  #7 (permalink)  
Старый 28.05.2009, 16:38
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Про позицию это фикс отображения полупрозрачного png в ИЕ.
Ответить с цитированием
  #8 (permalink)  
Старый 28.05.2009, 22:58
Аспирант
Отправить личное сообщение для Pattern Посмотреть профиль Найти все сообщения от Pattern
 
Регистрация: 13.05.2009
Сообщений: 37

<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>
Ответить с цитированием
Ответ


Опции темы Искать в теме
Искать в теме:

Расширенный поиск