javascript星级评分方法与实例

发布时间:2019-09-15编辑:脚本学堂
本文介绍了javascript星级评分的实现方法,用javascript实现简单的星级评分,鼠标划过或点击某颗星星,就点亮这颗星星及之前的星星,并熄灭这颗星星之后的星星,需要的朋友参考下。

js实现的星级评分代码。
基本思路:
无论鼠标划过或点击某颗星星,就点亮这颗星星及之前的星星,并熄灭这颗星星之后的星星。

效果图:
js实现星星评分

1,html部分:
span即每颗星星,共10颗。

<div id=”star”>
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
</div>

2,css部分:
顺便练习css3,于是用css写星星的形状。

#star{
text-align: center;
padding-top: 30px;
}
#star span{
margin: 50px 0;
position: relative;
display: inline-block;
color: #999;
width: 0px;
height: 0px;
border-right: 30px solid transparent;
border-bottom: 20px solid #999;
border-left: 30px solid transparent;
-moz-transform: rotate(35deg);
-webkit-transform: rotate(35deg);
-ms-transform: rotate(35deg);
-o-transform: rotate(35deg);
}
#star span:before {
border-bottom: 30px solid #999;
border-left: 10px solid transparent;
border-right: 10px solid transparent;
position: absolute;
height: 0;
width: 0;
top: -18px;
left: -23px;
display: block;
content:”;
-webkit-transform: rotate(-35deg);
-moz-transform: rotate(-35deg);
-ms-transform: rotate(-35deg);
-o-transform: rotate(-35deg);
}
#star span:after {
position: absolute;
display: block;
color: #666;
top: 3px;
left: -34px;
width: 0px;
height: 0px;
border-right: 30px solid transparent;
border-bottom: 20px solid #999;
border-left: 30px solid transparent;
-webkit-transform: rotate(-70deg);
-moz-transform: rotate(-70deg);
-ms-transform: rotate(-70deg);
-o-transform: rotate(-70deg);
content:”;
}

/*用于点亮星星的class名为rated*/
#star span.rated,
#star span.rated:before,
#star span.rated:after
{
color:#ff0000;
border-bottom-color:#ff0000;
}

3,javascript星级评分代码:

var starGroup = document.getElementById(‘star’).children,
clickIndex; //定义一个全局变量用于储存被点击星星的索引值
window.onload = starFunc;
function starFunc() {
for (var i = 0; i < starGroup.length; i++) {//将每颗星星循环出来
starGroup[i].onmouseover = starHover;//绑定鼠标划到星星上的事件
starGroup[i].onclick = starClick;//绑定点击星星事件
starGroup[i].onmouseout = starOut;//绑定鼠标移出星星事件
starGroup[i].index = i;//获得每颗星星的索引
};
}

function starHover() {
var curIndex = this.index;//鼠标划过星星时,获得当前星星索引值
starLight(curIndex);//传入点亮星星的函数,从而执行点亮和熄灭动作
} //edit www.jb200.com

function starClick() {
var curIndex = this.index;//获得当前被点击星星的索引值
starLight(curIndex);//传入点亮星星的函数
clickIndex = curIndex;//将被点击星星的索引值记录下来
}

function starOut() {
//如果点击事件发生,被点击星星索引传入点亮星星函数,鼠标划出时将恢复点击时的状态,如果点击事件没有发生,星星将全部熄灭
starLight(clickIndex);
}

function starLight(index) {//点亮星星函数,当mouse over和点击事件发生时,将当前星星索引值传入,用以执行星星的点亮和熄灭动作
for (var i = 0; i < starGroup.length; i++) {
if (i <= index) {
starGroup[i].className = “rated”;//点亮星星
} else {
starGroup[i].className = “”;//熄灭星星
};
};
}

备注:以上星级评分并不够完整和严谨,仅作学习之用,大家自行扩展。