24.05.2010, 22:01
|
Аспирант
|
|
Регистрация: 24.05.2010
Сообщений: 31
|
|
Голосование звездочками
Прошу помощи, не могу найти ошибку в скрипте. Проблема в том, что при наведении на звезду мыши, не меняется ничерта изображение этой самой звезды и текст справа.
Пример работы: 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"
}
}
};
|
|
27.05.2010, 07:18
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,105
|
|
для начала добавьте в настройки var mark = []; и поставьте id для вывода оценки
<span class='ratingText' id='$rt'>Твой голос!</span>
|
|
27.05.2010, 23:25
|
Аспирант
|
|
Регистрация: 24.05.2010
Сообщений: 31
|
|
<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 для вывода почему-то всегда пустой...
|
|
27.05.2010, 23:56
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,105
|
|
замена у вас не происходит в id='$ID$rt' может быть нужно так id=\"$ID$rt\"
и здесь тоже кавычки нужны ? set($RATING_NUM$,,\"\"); и тут off(this,$RATING_NUM$)
сам скрипт верный но ему не с чем работать нет оценки предыдущей это $RATING_NUM$ и нет id это $ID$
Последний раз редактировалось рони, 27.05.2010 в 23:59.
|
|
28.05.2010, 00:21
|
Аспирант
|
|
Регистрация: 24.05.2010
Сообщений: 31
|
|
Вы правы, вина моя, в ординарных кавычках все воспринимается как текст, однако особо проблемы это не исправило, 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>
|
|
28.05.2010, 00:46
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,105
|
|
вам нужно на сервере смотреть почему замены нет , как вариант можно заблокировать предварительную установку
<script>
// set($RATING_NUM$,$ID$,'');
</script>
в ручную прописать id тут <span class='ratingText' id='$rt'>Твой голос!</span>
и заменить везде off(this,$RATING_NUM$) на off(this,0)
тогда и вывод надо сразу массовом сделать в настройки добавить var mark=marks.split(",");
Последний раз редактировалось рони, 28.05.2010 в 00:51.
|
|
28.05.2010, 01:52
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,105
|
|
ок но если 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
|
|
06.06.2010, 14:43
|
|
Аспирант
|
|
Регистрация: 28.04.2010
Сообщений: 42
|
|
Млин. Скрипт мой и ошибок в нем нет, хоть он конечно и жутко написан - давно писал. Если не можете нормально его настроить - перечитайте тему в моем блоге
|
|
|
|