js实现评分特效
先准备三张图片 empty.png --白色星星图片 用于用户为选择时状态显示 yellow 黄色星星图片 用于用户选择好时显示 green绿色图片用于当用户鼠标在上面移动时显示
body 内容
<ul id="ulStar">
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
<style type="text/css">
#ulStar {
border:0px solid #0094ff;
list-style-type:none;
padding:0px;
margin:50px auto;
width:200px;
}
#ulStar li{
border:0px solid #0094ff;
display:inline;/*变成行内元素*/
margin:0px;
padding:6px 13px;
line-height:30px;/*行高--*/
background-image:url(/empty.png);
}
</style>
<script type="text/javascript">
var tt = false;//这个标准用来判断用户是否选择好了评分
window.onload = function () {
var liset = document.getElementById("ulStar").children;//获取li标签里面的内容 并且过滤li标签
for (var i = 0; i < liset.length; i++) {
liset[i].onmouseover = function () {//当鼠标在上面移动的时候
if (tt) return; //如果选择好了就返回 不执行下面代码
this.style.backgroundImage = "url(/green.png)";
var prate = this.previousElementSibling;//取这个节点前面的兄弟节点
while (prate) { //判断兄弟节点
prate.style.backgroundImage = "url(/green.png)"; //修改这个兄弟节点的背景图片
prate = prate.previousElementSibling; //然后再取这个兄弟节点的前一个兄弟节点
}
}
//鼠标离开的时候
liset[i].onmouseout = function () {
if (tt) return;
this.style.backgroundImage = "url(/empty.png)";
}
//鼠标点击的时候
liset[i].onclick = function () {
this.style.backgroundImage = "url(/yellow.png)";
var prate = this.previousElementSibling;
while (prate) {
prate.style.backgroundImage = "url(/yellow.png)";
prate = prate.previousElementSibling;
tt = true;
}
var prate = this.nextElementSibling //当用户鼠标点击时就取消移动事件 通过这个方法来让用户选择评分
while (prate) {
prate.style.backgroundImage = "url(/empty.png)";
prate = prate.nextElementSibling;
}
}
}
}
</script>