如何实现一个页面多个评分效果?
js星星评分的代码,如何评多次分呢?
js实现星星评分,效果图如下:
1,css代码
#ratestatus{float:left; clear:both; width:100%; height:20px;} #rateme{ clear:both; width:100%; padding:0px; margin:0px;} #rateme li{float:left;list-style:none;} #rateme li a:hover, #rateme .on{background:url(star_on.gif) no-repeat;width:12px;height:12px;} #rateme a{float:left;background:url(star_off.gif) no-repeat;width:12px; height:12px;} #ratingsaved{display:none;} .saved{color:red; }
2,html代码
<span id="ratestatus">评分...</span> <span id="ratingsaved">评分结果!</span> <div id="rateme" title="评分..."> <a onclick="rateit(1,this)" id="1_1" title="较差" onmouseover="rating(1,this)" onmouseout="off(1,this)"></a> <a onclick="rateit(1,this)" id="1_2" title="还可以" onmouseover="rating(1,this)" onmouseout="off(1,this)"></a> <a onclick="rateit(1,this)" id="1_3" title="好" onmouseover="rating(1,this)" onmouseout="off(1,this)"></a> <a onclick="rateit(1,this)" id="1_4" title="相当好" onmouseover="rating(1,this)" onmouseout="off(1,this)"></a> <a onclick="rateit(1,this)" id="1_5" title="好极了" onmouseover="rating(1,this)" onmouseout="off(1,this)"></a> </div> <div id="rateme" title="评分..."> <a onclick="rateit(2,this)" id="2_1" title="较差" onmouseover="rating(2,this)" onmouseout="off(2,this)"></a> <a onclick="rateit(2,this)" id="2_2" title="还可以" onmouseover="rating(2,this)" onmouseout="off(2,this)"></a> <a onclick="rateit(2,this)" id="2_3" title="好" onmouseover="rating(2,this)" onmouseout="off(2,this)"></a> <a onclick="rateit(2,this)" id="2_4" title="相当好" onmouseover="rating(2,this)" onmouseout="off(2,this)"></a> <a onclick="rateit(2,this)" id="2_5" title="好极了" onmouseover="rating(2,this)" onmouseout="off(2,this)"></a> </div>
3,js星星评分代码:
var smax; // 最大数量的星星即最大评分值 var holder; // 鼠标停留的评分控件 var preset; // 保存了评分值(通过单击来进行评分) var rated=new array(); //是否评分过,并保存了结果(注意此值一旦设为空,就不能再评分) // 鼠标停留事件 function rating(idpre,num){ smax = 0; // 默认值为0 for(n=0; n<num.parentnode.childnodes.length; n++){ if(num.parentnode.childnodes[n].nodename == "a"){ smax++; } } if(!rated[idpre]){ s = num.id.replace(idpre+'_', ''); // 获取选中的星星的索引,这里使用_1,_2,_3,_4,_5来做为评分控件的id,当然也有其他的方式。 a = 0; for(i=1; i<=smax; i++){ if(i<=s){ document.getelementbyid(idpre+"_"+i).classname = "on"; document.getelementbyid("ratestatus").innerhtml = num.title; holder = a+1; a++; }else{ document.getelementbyid(idpre+"_"+i).classname = ""; } } } } // 离开事件 function off(idpre,me){ if(!rated[idpre]){ if(!preset){ for(i=1; i<=smax; i++){ document.getelementbyid(idpre+"_"+i).classname = ""; document.getelementbyid("ratestatus").innerhtml = me.parentnode.title; } }else{ rating(idpre,preset); //document.getelementbyid("ratestatus").innerhtml = document.getelementbyid("ratingsaved").innerhtml; } } } // 点击进行评分 function rateit(idpre,me){ if(!rated[idpre]){ document.getelementbyid("ratestatus").innerhtml = me.title;//document.getelementbyid("ratingsaved").innerhtml + " :: "+ preset = me; //rated=1; //设为1以后,就变成了最终结果,不能再修改评分结果 rated[idpre]=1; sendrate(me); rating(idpre,me); } } //使用ajax或其他方式发送评分结果 function sendrate(sel){ //alert("评分结果: "+sel.title); }
源码打包下载:下载地址