получение данных из базы данных до рейтинга 5 звезд

Я использую этот шаблон для отображения рейтинга рядом с пользователем.

{insert name=get_percent value=a assign=mpercent userid=$p.USERID}

  {if $mpercent ne ""}
    <div class='user-rate'>
      rate<span class='green'>{$mpercent}&#37;</span>
    </div>

  {else}
    <div class='user-rate'>not rated yet</div>
  {/if}

Я хотел бы изменить рейтинг с процентного значения на звездный рейтинг (0-5).

Я попробовал ответ в этой ссылке

это код, когда я добавил следующий CSS:

span.stars, span.stars span {
  display: block;
  background:url(../images/stars.png) 0 -16px repeat-x;
  width: 80px;
  height: 16px;
}

span.stars span {
  background-position: 0 0;
}

И JavaScript:

$(function() {
  $("span.stars").stars();
});

$.fn.stars = function() {
  return $(this).each(function() {
    $(this).html($('<span />')
      .width(Math.max(0, (Math.min(5, parseFloat($(this).html())))) * 16));
  });
}

И использовали это для каждого из рейтингов:

<p> <span class="stars">{$mpercent}</span>    </p>

я использовал {$mpercent}, чтобы получить рейтинг участника, но в результате я постоянно получаю 5 звезд.

Если я изменю значение класса span на фиксированное число (скажем, 1,2 или 3), я также получу тот же результат.


person everestbux    schedule 26.10.2013    source источник
comment
Я переформатировал ваш вопрос - если вы потратите время на то, чтобы сделать вопрос разборчивым, у вас будет гораздо больше шансов получить ответ.   -  person Ed_    schedule 27.10.2013


Ответы (1)


Два момента:

  1. Код, который вы связали, явно говорит, что вам нужно убедиться, что значение находится в диапазоне от 0 до 5. Таким образом, использование 0-100 покажет 5 для 5-100. Вам нужно использовать ($mpercent/100)*5 для преобразования в диапазон 0-5.
  2. Вы сделали код излишне трудным для чтения, сжав этот плагин jQuery до одной строки.

Тем не менее, код выглядит правильно. Я предлагаю вам изменить значение от 0 до 5, а затем дважды проверить, что оно по-прежнему всегда показывает 5 *. Обратите внимание, что этот код запускается только при загрузке модели DOM, поэтому, если вы измените содержимое диапазона с помощью инструментов разработчика Chrome или аналогичных инструментов, нельзя ожидать автоматического обновления звездного рейтинга.

person Ed_    schedule 26.10.2013
comment
спасибо за ваш ответ, я попробовал, но это не сработало, проблема в том, что даже если я изменил код {$ mpercent} между ‹span› на фиксированное число, например 1, 2 ... и т. д., я получаю тот же результат - person everestbux; 28.10.2013
comment
Хорошо, ну, как я уже сказал, код выглядит правильно. Какие усилия по отладке вы предприняли? Вы должны начать с проверки того, что функция действительно вызывается, добавив console.log('stars') под вызовом функции звездочки. - person Ed_; 28.10.2013