Не может сработать onclick из-за приоритета onmouseover и onmouseout
Здравствуйте. Функция вызывается по наведению мышки и по убиранию. Но так же необходимо что бы была реакция на клик. Ни ссылка, ни onclick не могут сработать. Пример работы вот здесь
http://rodya.ru/temp.html Функция заменяет содержания и клик не делается. Помогите справится с ней. В интернет не отпраляйте, там такого нету. |
Зачем вы перерисовываете все при каждом движении курсора?
|
Это как бы рейтинг ставить. Сначала высвечивается сколько он есть на самом деле. Потом когда сам хочешь поставить, водишь мышкой и выбираешь сколько зазвездить. Когда убираешь мышь, восстанавливается значение по умолчанию. Клик нужен что бы отправить оценку на сервер.
|
А перерисовывать-то все зачем? Можно просто фон менять.
|
А, ну хотя, сейчас попробую переделать. Спасибо за совет.
UPD: хотя там с background-postion проблемы на сколько я помню в разных браузерах, а я всё же хотел сделать один файл со звёздами. |
Приятно удивлён. Всё работает хорошо, во всех браузерах. Изначально я хотел делать через бэкграунды, но вспомнил что там проблемы с позицией и даже пробовать не стал. Про позицию там значит другого касается. Спасибо ещё раз.
|
Про позицию это фикс отображения полупрозрачного png в ИЕ.
|
<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, время: 05:17. |