Звездный рейтинг в цикле. Не могу передать 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 шт):

Автор решения: YakovL

Вообще довольно понятно, почему у вас не работает то, что вы пробудете. Возьмём попытку

<?$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);

т.е. должно заработать.

→ Ссылка
Автор решения: MaxWall

When calling .width("value") any valid CSS measurement may be used for the width (such as 100px, 50%, or auto).


добавить нужно +"px" к числу

→ Ссылка