Не может сработать 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, время: 15:31. |