所需图片:
html
<div class="starLevel">
<ul class="stars">
<li class="light star1"><a href="javascript:;">1</a></li>
<li class="star1"><a href="javascript:;">2</a></li>
<li class="star1"><a href="javascript:;">3</a></li>
<li class="star1"><a href="javascript:;">4</a></li>
<li class="star1"><a href="javascript:;">5</a></li>
</ul>
<ul class="stars">
<li class="light star2"><a href="javascript:;">1</a></li>
<li class="star2"><a href="javascript:;">2</a></li>
<li class="star2"><a href="javascript:;">3</a></li>
<li class="star2"><a href="javascript:;">4</a></li>
<li class="star2"><a href="javascript:;">5</a></li>
</ul>
<ul class="stars">
<li class="light star3"><a href="javascript:;">1</a></li>
<li class="star3"><a href="javascript:;">2</a></li>
<li class="star3"><a href="javascript:;">3</a></li>
<li class="star3"><a href="javascript:;">4</a></li>
<li class="star3"><a href="javascript:;">5</a></li>
</ul>
</div>
js
(遗留问题:无法用一个函数实现三组评分)
//打星星
var num1 =finalNum1 = tempNum1= 0;
var lis1 = document.getElementsByClassName("star1");
//num:传入点亮星星的个数
//finalNum:最终点亮星星的个数
//tempNum:一个中间值
function fnShow(num1) {
finalNum1 = num1 || tempNum1;//如果传入的num为0,则finalNum取tempNum的值
for (var i = 0; i < lis1.length; i++) {
if(i < finalNum1){
lis1[i].className += " light ";
}
else{
lis1[i].className = "star1";
}//点亮星星就是加class为light的样式
}
}
for (var i = 1; i <= lis1.length; i++) {
lis1[i - 1].index = i;
lis1[i - 1].onmouseover = function() { //鼠标经过点亮星星。
fnShow(this.index);//传入的值为正,就是finalNum
}
lis1[i - 1].onmouseout = function() { //鼠标离开时星星变暗
fnShow(0);//传入值为0,finalNum为tempNum,初始为0
}
lis1[i - 1].onclick = function() { //鼠标点击,同时会调用onmouseout,改变tempnum值点亮星星
tempNum1= this.index;
}
}
var num2 =finalNum2 = tempNum2= 0;
var lis2 = document.getElementsByClassName("star2");
//num:传入点亮星星的个数
//finalNum:最终点亮星星的个数
//tempNum:一个中间值
function fnShow2(num2) {
finalNum2 = num2 || tempNum2;//如果传入的num为0,则finalNum取tempNum的值
for (var i = 0; i < lis2.length; i++) {
if(i < finalNum2){
lis2[i].className += " light ";
}
else{
lis2[i].className = "star2";
}//点亮星星就是加class为light的样式
}
}
for (var i = 1; i <= lis2.length; i++) {
lis2[i - 1].index = i;
lis2[i - 1].onmouseover = function() { //鼠标经过点亮星星。
fnShow2(this.index);//传入的值为正,就是finalNum
}
lis2[i - 1].onmouseout = function() { //鼠标离开时星星变暗
fnShow2(0);//传入值为0,finalNum为tempNum,初始为0
}
lis2[i - 1].onclick = function() { //鼠标点击,同时会调用onmouseout,改变tempnum值点亮星星
tempNum2= this.index;
}
}
var num3 =finalNum3 = tempNum3= 0;
var lis3 = document.getElementsByClassName("star3");
//num:传入点亮星星的个数
//finalNum:最终点亮星星的个数
//tempNum:一个中间值
function fnShow3(num3) {
finalNum3 = num3 || tempNum3;//如果传入的num为0,则finalNum取tempNum的值
for (var i = 0; i < lis3.length; i++) {
if(i < finalNum3){
lis3[i].className += " light ";
}
else{
lis3[i].className = "star3";
}//点亮星星就是加class为light的样式
}
}
for (var i = 1; i <= lis3.length; i++) {
lis3[i - 1].index = i;
lis3[i - 1].onmouseover = function() { //鼠标经过点亮星星。
fnShow3(this.index);//传入的值为正,就是finalNum
}
lis3[i - 1].onmouseout = function() { //鼠标离开时星星变暗
fnShow3(0);//传入值为0,finalNum为tempNum,初始为0
}
lis3[i - 1].onclick = function() { //鼠标点击,同时会调用onmouseout,改变tempnum值点亮星星
tempNum3= this.index;
}
}
}