Голосование звездочками
Прошу помощи, не могу найти ошибку в скрипте. Проблема в том, что при наведении на звезду мыши, не меняется ничерта изображение этой самой звезды и текст справа.
Пример работы: http://pdspb.ru/contest/contest_3.html Собственно сам скрипт: // Настройки var path = 'http://studioad.ru/images/stars/'; //папка с картинками на вашем сайте var words = true; //отображать или нет названия оценок (true/false) var def = 'Твой голос!'; //надпись рядом с рейтингом по умолчанию. var ask = 'Вы подтверждаете оценку "$MARK$" ?' //вид запроса подтверждения. Код $MARK$ выводит выбранную оценку var marks = 'Отвратительно!,Плохо,Посредственно,Хорошо,Отлично!'; //название оценок через запятую от 1 до 5 // Код скрипта function set(a,b,y){ mod=y; mark=marks.split(","); var b=b.toString(); for(var i=1;i<=5;++i){ if(a>=i){ document.getElementById(b+i).src=path+"cur.png" } if(a<i){ document.getElementById(b+i).src=path+"off.png" } } } function rate(a){ var c=a.id.replace(/\d$/,""); var d=a.id.replace(c,""); if(confirm(ask.replace("$MARK$",mark[d-1]))){ function rf(){ var r=document.location.href; var i=r.indexOf("/",7); var l=r.substring(0,i); if(mod=="contest"){ return l+"/blog/0-0-"+d+"-"+c+"-14-1" } } _uPostForm('',{url:rf()}) } } function on(a){ var c=a.id.replace(/\d$/,""); var d=a.id.replace(c,""); if(words){ document.getElementById(c+"rt").innerHTML=mark[d-1] } for(var i=1;i<=5;++i){ if(d>=i){ document.getElementById(c+i).src=path+"on.png" } } } function off(a,b){ var d=a.id.replace(/\d$/,""); if(words){document.getElementById(d+"rt").innerHTML=def } for(var i=1;i<=5;++i){ if(b>=i){ document.getElementById(d+i).src=path+"cur.png" } if(b<i){ document.getElementById(d+i).src=path+"off.png" } } }; |
для начала добавьте в настройки var mark = []; и поставьте id для вывода оценки
<span class='ratingText' id='$rt'>Твой голос!</span> |
<div class='ratingWrapper'> <img src=\"http://studioad.ru/images/stars/off.png\" id=\"$ID$1\" onclick=\"rate(this)\" onmouseover=\"on(this)\" onmouseout=\"off(this,$RATING_NUM$)\"/> <img src=\"http://studioad.ru/images/stars/off.png\" id=\"$ID$2\" onclick=\"rate(this)\" onmouseover=\"on(this)\" onmouseout=\"off(this,$RATING_NUM$)\"/> <img src=\"http://studioad.ru/images/stars/off.png\" id=\"$ID$3\" onclick=\"rate(this)\" onmouseover=\"on(this)\" onmouseout=\"off(this,$RATING_NUM$)\"/> <img src=\"http://studioad.ru/images/stars/off.png\" id=\"$ID$4\" onclick=\"rate(this)\" onmouseover=\"on(this)\" onmouseout=\"off(this,$RATING_NUM$)\"/> <img src=\"http://studioad.ru/images/stars/off.png\" id=\"$ID$5\" onclick=\"rate(this)\" onmouseover=\"on(this)\" onmouseout=\"off(this,$RATING_NUM$)\"/> <span class='ratingText' id='$ID$rt'>Твой голос!</span> </div> <script> set($RATING_NUM$,$ID$,\"\"); </script> id для вывода почему-то всегда пустой... |
замена у вас не происходит в id='$ID$rt' может быть нужно так id=\"$ID$rt\"
и здесь тоже кавычки нужны ? set($RATING_NUM$,,\"\"); и тут off(this,$RATING_NUM$) сам скрипт верный но ему не с чем работать нет оценки предыдущей это $RATING_NUM$ и нет id это $ID$ |
Вы правы, вина моя, в ординарных кавычках все воспринимается как текст, однако особо проблемы это не исправило, id по прежнему пуст:
<div class='ratingWrapper'> <img src='http://studioad.ru/images/stars/off.png' id=$ID$1 onclick=rate(this) onmouseover=on(this) onmouseout=off(this,$RATING_NUM$)/> <img src='http://studioad.ru/images/stars/off.png' id=$ID$2 onclick=rate(this) onmouseover=on(this) onmouseout=off(this,$RATING_NUM$)/> <img src='http://studioad.ru/images/stars/off.png' id=$ID$3 onclick=rate(this) onmouseover=on(this) onmouseout=off(this,$RATING_NUM$)/> <img src='http://studioad.ru/images/stars/off.png' id=$ID$4 onclick=rate(this) onmouseover=on(this) onmouseout=off(this,$RATING_NUM$)/> <img src='http://studioad.ru/images/stars/off.png' id=$ID$5 onclick=rate(this) onmouseover=on(this) onmouseout=off(this,$RATING_NUM$)/> <span class='ratingText' id=$ID$rt>Твой голос!</span> </div> <script> set($RATING_NUM$,$ID$,''); </script> |
вам нужно на сервере смотреть почему замены нет , как вариант можно заблокировать предварительную установку
<script> // set($RATING_NUM$,$ID$,''); </script> в ручную прописать id тут <span class='ratingText' id='$rt'>Твой голос!</span> и заменить везде off(this,$RATING_NUM$) на off(this,0) тогда и вывод надо сразу массовом сделать в настройки добавить var mark=marks.split(","); |
ок но если id=3 то и тут
document.getElementById(c+"rt").innerHTML=mark[d-1] ---- document.getElementById("3").innerHTML=mark[d-1] и тут if(words){document.getElementById(d+"rt").innerHTM L=def тоже 3 |
Млин. Скрипт мой и ошибок в нем нет, хоть он конечно и жутко написан - давно писал. Если не можете нормально его настроить - перечитайте тему в моем блоге
|
Часовой пояс GMT +3, время: 23:04. |