Javascript制作的评星打分系统
前不久用JQuery做了个评星打分的小东东,这次用javascript重写一遍。JQuery在浏览器事件兼容判断方面为我们做了很多底层工作,的确是大大的方便开发和减少的很多代码量。不过Javascript毕竟是最基本的东西,还是不能忘记噢。JQuery版的地址在这里,大家可以对比着看看。
演示效果如下:
Javascript代码:
1
// JavaScript Document
2
var descriptionTxt;
3
var description = new Array("非常差,回去再练练","真的是差,都不忍心说你了","一般,还过得去吧","很好,是我想要的东西","太完美了,此物只得天上有,人间哪得几回闻!");
4
function stopDefault(e){
5
if(e && e.preventDefault)
6
e.preventDefault();
7
else
8
window.event.returnValue = false;
9
return false;
10
};
11![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
12
var $ = function(id){
13
return typeof id == "string"? document.getElementById(id):id;
14
}
15![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
16
function addEventHandler(oTarget, sEventType, fnHandler){
17
if(oTarget.addEventHandler){
18
oTarget.addEventListener(sEventType,fnHandler,false);
19
}else if(oTarget.attachEvent){
20
oTarget.attachEvent("on"+sEventType,fnHandler);
21
}else{
22
oTarget["on"+sEventType] = fnHandler;
23
}
24
};
25![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
26
function changeStars(){
27
var starSys = $("xzw_starBox");
28
var stars = starSys.getElementsByTagName("a");
29
if(stars){
30
for(var i=0; i<stars.length; i++){
31
var star = stars[i];
32
addEventHandler(star,"mouseover",displayDes);
33
addEventHandler(star,"mouseout",displayDes);
34
addEventHandler(star,"click",showDes);
35
addEventHandler(starSys,"mouseover",changZindex);
36
addEventHandler(starSys,"mouseout",changZindex);
37
}
38
}
39
}
40![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
41
function changZindex(e){
42
var e = e || window.event;
43
if(e.type == 'mouseover'){
44
$("xzw_star").style.zIndex = "3";
45
}else if(e.type == 'mouseout'){
46
$("xzw_star").style.zIndex = "1";
47
}
48
}
49![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
50
function showDes(e){
51
var stepW = 26;
52
var e = e || window.event;
53
var titleTxt = null;
54
if(e.srcElement){
55
titleTxt = e.srcElement.title;
56
}else if(e.target){
57
titleTxt = e.target.title;
58
}
59
descriptionTxt = description[titleTxt-1];
60
$("description").innerHTML = descriptionTxt;
61
$("showb").style.width = stepW * titleTxt + "px";
62
return stopDefault(e);
63
return descriptionTxt;
64
}
65![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
66
function displayDes(e){
67
var e = e || window.event;
68
var titleTxt = null;
69
var descriptionTxtTemp = descriptionTxt;
70
if(e.srcElement){
71
titleTxt = e.srcElement.title
72
}else if(e.target){
73
titleTxt = e.target.title
74
}
75
var descriptionTxt2 = description[titleTxt-1];
76
if(e.type == 'mouseover'){
77
$("description").innerHTML = descriptionTxt2;
78
}else if(e.type == 'mouseout'){
79
if(descriptionTxtTemp != null){
80
$("description").innerHTML = descriptionTxtTemp;
81
}else{
82
$("description").innerHTML = "";
83
}
84
}
85
return stopDefault(e);
86
}
87
window.onload = changeStars;
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
2
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
3
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
4
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
5
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
6
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
7
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
8
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
9
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
10
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
11
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
12
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
13
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
14
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
15
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
16
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
17
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
18
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
19
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
20
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
21
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
22
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
23
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
24
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
25
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
26
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
27
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
28
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
29
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
30
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
31
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
32
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
33
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
34
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
35
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
36
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
37
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
38
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
39
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
40
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
41
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
42
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
43
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
44
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
45
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
46
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
47
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
48
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
49
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
50
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
51
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
52
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
53
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
54
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
55
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
56
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
57
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
58
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
59
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
60
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
61
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
62
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
63
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
64
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
65
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
66
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
67
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
68
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
69
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
70
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
71
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
72
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
73
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
74
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
75
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
76
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
77
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
78
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
79
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
80
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
81
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
82
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
83
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
84
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
85
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
86
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
87
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
HTML结构:
1
<div id="xzw_starSys">
2
<div id="xzw_starBox">
3
<ul class="star" id="xzw_star">
4
<li><a href="#" title="1" class="one-star" hidefocus="true">1</a></li>
5
<li><a href="#" title="2" class="two-stars" hidefocus="true">2</a></li>
6
<li><a href="#" title="3" class="three-stars" hidefocus="true">3</a></li>
7
<li><a href="#" title="4" class="four-stars" hidefocus="true">4</a></li>
8
<li><a href="#" title="5" class="five-stars" hidefocus="true">5</a></li>
9
</ul>
10
<div class="current-rating" id="showb"></div>
11
</div>
12
<span id="description" class="description"></span>
13
</div>
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
2
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
3
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
4
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
5
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
6
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
7
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
8
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
9
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
10
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
11
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
12
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
13
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
CSS代码:
1
#xzw_starSys *{margin:0; padding:0}
2
#xzw_starSys ul, #xzw_starSys li { list-style-type:none}
3
#xzw_starSys{height:20px; width:500px; border:1px solid #cecece; margin:10px auto; padding:5px; font-size:12px; line-height:22px; overflow:hidden}
4
#xzw_starBox{position:relative; width:130px; float:left; }
5
#xzw_starSys .description {float:left; margin-left:20px}
6
#xzw_starSys .star { height:20px; width:130px; position:relative; background:url(images/star.gif) left -40px repeat-x; cursor:pointer}
7
#xzw_starSys .star li { float:left; padding:0px; margin:0px}
8
#xzw_starSys .star li a { display:block; width:26px; height:20px; overflow:hidden; text-indent:-9999px; position:absolute; z-index:5; }
9
#xzw_starSys .star li a:hover {background:url(images/star.gif) 0 -20px ; z-index:3; left:0; top:0 }
10
#xzw_starSys .star li a:focus {outline:none}
11
#xzw_starSys .star a.one-star {left:0; }
12
#xzw_starSys .star a.one-star:hover {width:26px;}
13
#xzw_starSys .star a.two-stars {left:26px; }
14
#xzw_starSys .star a.two-stars:hover {width:52px;}
15
#xzw_starSys .star a.three-stars {left:52px; }
16
#xzw_starSys .star a.three-stars:hover {width:78px;}
17
#xzw_starSys .star a.four-stars {left:78px; }
18
#xzw_starSys .star a.four-stars:hover {width:104px;}
19
#xzw_starSys .star a.five-stars {left:104px; }
20
#xzw_starSys .star a.five-stars:hover {width:130px;}
21
#xzw_starSys .current-rating{ background: url(images/star.gif) left top; position: absolute; height: 20px; z-index: 1; top:0; left:0 }
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
2
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
3
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
4
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
5
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
6
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
7
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
8
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
9
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
10
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
11
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
12
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
13
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
14
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
15
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
16
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
17
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
18
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
19
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
20
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
21
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)