Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 24.05.2010, 22:01
Аспирант
Отправить личное сообщение для [MI_nor] Посмотреть профиль Найти все сообщения от [MI_nor]
 
Регистрация: 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"
	}
}

};
Ответить с цитированием
  #2 (permalink)  
Старый 27.05.2010, 07:18
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

для начала добавьте в настройки var mark = []; и поставьте id для вывода оценки
<span class='ratingText' id='$rt'>Твой голос!</span>
Ответить с цитированием
  #3 (permalink)  
Старый 27.05.2010, 23:25
Аспирант
Отправить личное сообщение для [MI_nor] Посмотреть профиль Найти все сообщения от [MI_nor]
 
Регистрация: 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 для вывода почему-то всегда пустой...
Ответить с цитированием
  #4 (permalink)  
Старый 27.05.2010, 23:56
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

замена у вас не происходит в id='$ID$rt' может быть нужно так id=\"$ID$rt\"
и здесь тоже кавычки нужны ? set($RATING_NUM$,,\"\"); и тут off(this,$RATING_NUM$)

сам скрипт верный но ему не с чем работать нет оценки предыдущей это $RATING_NUM$ и нет id это $ID$

Последний раз редактировалось рони, 27.05.2010 в 23:59.
Ответить с цитированием
  #5 (permalink)  
Старый 28.05.2010, 00:21
Аспирант
Отправить личное сообщение для [MI_nor] Посмотреть профиль Найти все сообщения от [MI_nor]
 
Регистрация: 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>
Ответить с цитированием
  #6 (permalink)  
Старый 28.05.2010, 00:46
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

вам нужно на сервере смотреть почему замены нет , как вариант можно заблокировать предварительную установку
<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.
Ответить с цитированием
  #7 (permalink)  
Старый 28.05.2010, 01:52
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

ок но если 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
Ответить с цитированием
  #8 (permalink)  
Старый 06.06.2010, 14:43
Аватар для Aleko
Аспирант
Отправить личное сообщение для Aleko Посмотреть профиль Найти все сообщения от Aleko
 
Регистрация: 28.04.2010
Сообщений: 42

Млин. Скрипт мой и ошибок в нем нет, хоть он конечно и жутко написан - давно писал. Если не можете нормально его настроить - перечитайте тему в моем блоге
Ответить с цитированием
Ответ



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

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