javascript实现评分控件

    在电子商务网站中,会出现对于商品评分和服务态度的打分问题,其具体是用"★"和"☆"来区别的。其中主要的技术是使用Dom实现,下面请看代码:

 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 2 <html xmlns="http://www.w3.org/1999/xhtml" >
 3 <head>
 4     <title>无标题页</title>
 5     <script type="text/javascript">
 6     function indexOf(arr,e){
 7      for(var i=0;i<arr.length;i++){
 8        if(arr[i]==e){
 9         return i;
10        }
11      }
12     }
13      function rating(){
14       var tables=document.getElementById("rating");
15       var tds=tables.getElementsByTagName("td");
16       for(var i=0;i<tds.length;i++){
17         var td=tds[i];
18         td.style.cursor="pointer";
19         td.onmouseover=function(){
20          var tables=document.getElementById("rating");
21          var tds=tables.getElementsByTagName("td");
22          var index=indexOf(tds,this);
23            if(index>=0){
24             for(var i=0;i<=index;i++){
25              tds[i].innerHTML="";
26             }
27             for(var i=index+1;i<tds.length;i++){
28              tds[i].innerHTML="";
29             }
30            }
31         };
32       }
33      }
34     </script>
35 </head>
36 <body onload="rating()">
37 <table id="rating"><tr><td></td><td></td><td></td><td></td><td></td></tr></table>
38 
39 </body>
40 </html>

       实现此效果的具体步骤如下:

       1.在body中建立一个table,table是一个一行五列的表,其id为"rating"。

       2.建立一个名为rating的函数,此函数的主要功能是实现评分功能。首先取得table,然后取得此table的lie(td)。取得td后使用for语句对所有的td进行遍历并为每一个td添加onmouseover事件(td.onmouseover=function(){}),这里使用的是匿名函数。

      3.在onmouseover事件中,要考虑两个问题。第一,如何判断鼠标定位哪一个td上;第二,如何将定位的td以及以前的td中的”☆“变为”★“,将之后的”★“变为”☆“。判断鼠标的定位在其他的语言中有一个indexOf()可以实现,但javascript中没有这个函数,此时可以手写了一个indexof()函数。此函数中两个参数arr为一个数组,e为定元素,所以indexOf函数的含义为,当数组中第i个元素等于定位元素时,返回数组的key值。在代码中的var index=indexOf(tds,this);中的index即时当前的定位元素的key值。所以第二个问题也迎刃而解,只需要使用for语句对于tds数组中的元素的innerHTML根据要求进行赋值即可。

  注意:在做此练习是五角星可以使用搜狗或者QQ拼音输入wjx即可选择。

    

posted @ 2012-05-29 00:49  孙进  阅读(881)  评论(0编辑  收藏  举报