2013-10-26 33 views
0

我正在使用此模板在用戶旁邊顯示評分。從數據庫獲取數據到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)。

我想答案在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-100 0到5之間,因此會顯示5 5-100。您需要使用($mpercent/100)*5轉換爲0-5範圍。
  2. 你已經通過將該jQuery插件壓縮到一行來使代碼難以閱讀。

但是,代碼看起來正確。我建議你將值改爲0到5之間,然後再檢查它是否總是顯示5 *。請注意,此代碼僅在DOM加載時運行,因此如果您使用Chrome開發人員工具或類似工具更改了跨度的內容,則不能預期星級將自動更新。

+0

感謝您的回答 我試了一下,但它沒有工作 問題是即使我改變了之間的代碼{$ mpercent}到一個像1,2等固定數字,我得到了相同的結果 – everestbux

+0

好吧,好吧 - 正如我所說 - 代碼看起來是對我的。你做了什麼調試工作?您應該首先通過在星型函數調用下添加'console.log('stars')來檢查實際調用的函數。 –