Звездный рейтинг в цикле. Не могу передать id элемента из PHP в JS
Не получается передать id элемента из переменной PHP в js-скрипт.
Есть супер-простой вывод звезд рейтинга:
<div id="raiting_blank"></div>
<div id="raiting_votes"></div>
<script type="text/javascript">
$(document).ready(function(){
total_reiting = 4.5; // итоговый ретинг
var star_widht = total_reiting*17 ;
$('#raiting_votes').width(star_widht);
});
</script>
#raiting_blank { background:url(images/ratings.png); width:83px; } /* "Чистые" звездочки */
#raiting_votes {background:url(images/ratings.png) 0 -16px} /* Закрашенные звездочки */
ПО ХОРОШЕМУ:
взять id страницы товара и прикрутить например к концу raiting_blank и raiting_votes чтобы в цикле у своего рейтинга был свой id и он закрашивал определенное количество ширины желтыми звездами.
Но оно так не работает хотя я пару лет назад писал уже подобное и всё работало.
Что конкретно у меня не выходит:
я не могу никак всунуть переменную на место #raiting_votes
$('#raiting_votes').width(star_widht);
я уже крутил и так
<?$ololo = '#raiting_votes';?>
$(<?=$ololo?>).width(star_widht);
и так
<?$ololo = '#raiting_votes';?>
$(<? echo $ololo;?>).width(star_widht);
и еще сто способов перепробовал и никак.
Самое интересное, что если я в скрипте делаю переменную:
ololo = '#raiting_votes';
$(ololo).width(star_widht);
оно работает, но если переменную вставляю извне, то нет! Хотя когда средний рейтинг загоняю извне, то всё работает...
<?$total_rating = '4.5';?>
total_rating = <?=$total_reiting?>;
Непонятно, в чём проблема. Кто-то понимает как заставить это работать? Заранее спасибо.
Ответы (2 шт):
Вообще довольно понятно, почему у вас не работает то, что вы пробудете. Возьмём попытку
<?$ololo = '#raiting_votes';?>
$(<? echo $ololo;?>).width(star_widht);
Чего вы ожидаете в получившемся html? Наверное,
$('#raiting_votes').width(star_widht);
а зря: скорее всего, после подстановки вы получите
$(#raiting_votes).width(star_widht);
т.к. кавычки входят в синтаксис php, а не в значение $ololo. Попробуйте вместо этого
<?$ololo = '"#raiting_votes"';?>
$(<? echo $ololo;?>).width(star_widht);
ожидаемый результат в этом случае -
$("#raiting_votes").width(star_widht);
т.е. должно заработать.
When calling .width("value") any valid CSS measurement may be used for the width (such as 100px, 50%, or auto).
добавить нужно +"px" к числу