从数据库获取数据到5星评级

时间:2013-10-26 20:04:30

标签: jquery css rate

我正在使用此模板在用户旁边显示评分。

{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),我也会得到相同的结果。

1 个答案:

答案 0 :(得分:0)

两点:

  1. 您明确链接的代码表示您需要确保该值介于0和5之间。因此,使用0-100将显示5到5的值。您需要使用($mpercent/100)*5转换为0-5范围。
  2. 通过将jQuery插件压缩到一行,你已经使代码难以阅读。
  3. 但是,代码看起来是正确的。我建议你将值改为0到5之间,然后仔细检查它仍然总是显示5 *。请注意,此代码仅在DOM加载时运行,因此如果您使用chrome开发人员工具或类似工具更改跨度的内容,则 希望星级评分自动更新。