javascript - Laravel 中的星级和半星评级
问题描述
我想以星级显示平均产品评级。值显示良好,但如果值是浮动的,我想显示半星。
我的刀片视图:
<div class="rating">
@for($i=0;$i<5;$i++)
@if($product->ratings->avg('rating') > $i)
<span class="icon-ratings"><i class="icon-rating icon-rating-x"></i></span>
@else
<span class="icon-ratings"><i class="icon-rating icon-rating-o"></i></span>
@endif
@endfor
<div style="float:left">{{$product->ratings->avg('rating')}}</div>
</div>
平均值显示为 4.5。但是所有的5颗星都充满了金色。我想填充最后一半的星,因为那是一个浮点数。
解决方案
使用floor()
函数来检测这样的浮点值
.................
@for($i=0;$i<5;$i++)
<?php
$thisRating = product->ratings->avg('rating')
if(floor($thisRating) != $thisRating) {
$hasHalfVal = 1;
} else {
$hasHalfVal = 0;
}
?>
@if($thisRating > $i && $hasHalfVal == 0)
<span class="icon-ratings"><i class="icon-rating icon-rating-x"></i></span>
@else if($thisRating > $i && $hasHalfVal == 1)
<span class="icon-ratings"><i class="icon-rating icon-rating-half"></i></span>
@else
<span class="icon-ratings"><i class="icon-rating icon-rating-o"></i></span>
@endif
.................
推荐阅读
- reactjs - 如何在 React 中收听第三方脚本事件
- sql - 匹配以前和当前的记录有和没有滞后和领先
- java - 本地主机上的 JDBC 未连接
- c++ - 如何使用具有更高兼容性的 GCC
- javascript - js正则表达式如何匹配逗号分隔的不包含()的内容
- java - java.lang.NoSuchMethodError: 没有静态方法 (Landroid/content/Context;)
- c++ - 限定名称和使用声明的 clang 错误消息
- angular - 在 IIS-6 中部署时,角度加载错误的资源路径
- mysql - 删除特定行后重新排列自动递增的行 -
- matlab - 如何在 Matlab 中生成带有斜升/斜降的音调?