0

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

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

4

1 回答 1

0

两点:

  1. 您已明确链接的代码表明您需要确保该值介于 0 和 5 之间。因此使用 0-100 将显示 5 表示 5-100。您需要使用($mpercent/100)*5转换为 0-5 范围。
  2. 通过将 jQuery 插件压缩为一行,您使代码变得不必要地难以阅读。

但是,代码看起来是正确的。我建议您将值更改为 0 到 5 之间,然后仔细检查它是否仍然始终显示 5*。请注意,此代码仅在 DOM 加载时运行,因此如果您使用 chrome 开发人员工具或类似工具更改 span 的内容,您不能期望星级评分会自动更新。

于 2013-10-26T22:58:11.317 回答