2013-10-26 2 views
0

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

{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).

Я попытался ответить в this link

это код, как я добавил следующий 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), я получаю тот же результат.

+0

Я переформатировал ваш вопрос - если вы поставите время, чтобы сделать вопрос разборчивым, тогда вы получите гораздо больше шансов получить ответ. –

ответ

0

Две точки:

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

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

+0

спасибо за ваш ответ Я попробовал, но это не сработало проблема даже в том, что я изменил код {$ mpercent} между на фиксированное число вроде 1, 2 ... и т. Д., Я получаю тот же результат – everestbux

+0

Хорошо, как я уже сказал - код выглядит правильно для меня. Какие усилия по отладке вы сделали? Вы должны начать с проверки того, что функция фактически вызвана, добавив 'console.log ('stars')' под вызовом функции stars. –

Смежные вопросы