使用js实现用户评论的星级

     该博客是使用js的几张图片实现用户自定义对某样东西进行评价的星级。

以下是写好的js的样式片段:


<style>

body{font-size:12px;}ul{padding:0;margin:0;}.star_rating {list-style:none;margin:-1px 0 0 -1px; padding:0; width:70px; height:12px; position:relative; background:url(http://demo.jb51.net/demoimg/rating_stars.gif) 0 0 repeat-x; overflow:hidden;font-size:0;}.star_rating li{padding:0;margin:0;float:left;}.star_rating li a{display:block;width:14px;height:12px;text-decoration:none;text-indent:-9000px;z-index:20;position:absolute;padding:0;margin:0;}.star_rating li a:hover{background:url(http://demo.jb51.net/demoimg/rating_stars.gif) 0 12px;z-index:2;left:0;}.star_rating a.one_star{left:0;}.star_rating a.one_star:hover{width:14px;}.star_rating a.two_stars{left:14px;}.star_rating a.two_stars:hover{width:28px;}.star_rating a.three_stars{left:28px;}.star_rating a.three_stars:hover{width:42px;}.star_rating a.four_stars{left:42px;}.star_rating a.four_stars:hover{width:56px;}.star_rating a.five_stars{left:56px;}.star_rating a.five_stars:hover{width:70px;}.star_rating li.current_rating{background:url(http://demo.jb51.net/demoimg/rating_stars.gif) 0 24px;position:absolute;height:12px;display:block;text-indent:-9000px;z-index:1;left:0;}#www_zzjs_net{margin:0 0 20px 20px;}#www_zzjs_net p{margin:20px 0 5px 0;}

</style>


接下来是使用js写的几个方法:

<script>
function __start(){

 var initialize_width=0;

 if(document.getElelmentById){return false};

 if(document.getElementsByTagName==null){return false;}

 var startLevelObj=document.getElementById("www_zzjs_net")

 if(startLevelObj==null){return false;}

 initialize_width=parseInt(startLevelObj.getAttribute("star_width"),10);

 if(isNaN(initialize_width) || initialize_width==0){return false;}

 var ul_obj=startLevelObj.getElementsByTagName("ul");

 if(ul_obj.length<1){return false;}

 var length=ul_obj.length;

 var li_length=0;

 var a_length=0;

 var li_obj=null;

 var a_obj=null;

 var defaultInputObj=null;

 var defaultValue=null;

 for(var i=0;i<length;i++){

  li_obj=ul_obj[i].getElementsByTagName("li");

  li_length=li_obj.length;

  if(li_length<0){return false;}

  //获取默认值

  defaultInputObj=li_obj[0].getElementsByTagName("input");if(!defaultInputObj){return false;}

  defaultValue=parseInt(defaultInputObj[0].value,10);

  if(!isNaN(defaultValue) && defaultValue!=0){

   //alert("有初始值!");

   //li_obj[1].style.width=initialize_width*defaultValue+"px";

   //defaultValue=0;

  }

  for(var j=0;j<li_length;j++){

   a_obj=li_obj[j].getElementsByTagName("a");

   if(a_obj.length<1){continue;}

   if(a_obj[0].className.indexOf("star")>0){

    a_obj[0].οnclick=function(){

     return give_value(this);

    }

    a_obj[0].οnfοcus=function(){

     this.blur();

    }

   }

  }

 }

}

function give_value(obj){

 var status=true;

 var parent_obj=obj.parentNode;

 var i=0;

 while(status){

  i++;

  if(parent_obj.nodeName=="UL"){break;}

  parent_obj=parent_obj.parentNode;

  if(i>1000){break;}//防止找不到ul发生死循环

 }

 var hidden_input=parent_obj.getElementsByTagName("input")[0];

 if(hidden_input.length<1){/*alert("sorry?\nprogram error!")*/;}

 var txt=obj.firstChild.nodeValue;//确保不能存在空格哦,因为这里用的firstChild

 if(isNaN(parseInt(txt,10))){/*alert('level error!')*/;return false;}

 hidden_input.setAttribute("value",txt.toString());

 //固定选中状态,先找到初始化颜色那个li

 var current_li=parent_obj.getElementsByTagName("li");

 var length=current_li.length;

 var ok_li_obj=null;

 for(var i=0;i<length;i++){

  if(current_li[i].className.indexOf("current_rating")>=0){

   ok_li_obj=current_li[i];break;//找到

  }

 }

 __current_width=txt*14;

 ok_li_obj.style.width=__current_width+"px";

 return false;

}

__start();

</script>


好了,准备工作都完成了,接下来是显示的问题了

<div id="www_zzjs_net" star_width="14">
                    <ul class="star_rating" style=' margin-left: 250px; margin-top: -20px;'>

                        <li style="display:none;">

                            <input type="text" name="serve" value="" id='serve' />

                        </li>
                        
                        <li class="current_rating">default level</li>

                        <li><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" title="1 of 5 stars" class="one_star">1</a></li>

                        <li><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" title="2 of 5 stars" class="two_stars">2</a></li>

                        <li><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" title="3 of 5 stars" class="three_stars">3</a></li>

                        <li><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" title="4 of 5 stars" class="four_stars">4</a></li>

                        <li><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" title="5 of 5 stars" class="five_stars">5</a></li>

                    </ul>
                    </div>

图文中有个为serve的文本框,该文本框就可以获取到你选中的星级了,赶快去试试吧


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值