JS实现带提示的星级评分效果完整实例


Posted in Javascript onOctober 30, 2015

本文实例讲述了JS实现带提示的星级评分效果。分享给大家供大家参考,具体如下:

这是一款JS仿淘宝网的星级评分系统,鼠标放在上边可以显示星级代表的评分级别,鼠标点击时会选中当前的星级,目前此功能在网页上十分流行,虽然是仿做的,但已经很不错的功能了,希望大家喜欢!

运行效果截图如下:

JS实现带提示的星级评分效果完整实例

在线演示地址如下:

具体代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>星级评分系统</title>
<style> 
body,div,ul,li,p{margin:0;padding:0;}
body{color:#666;font:12px/1.5 Arial;}
ul{list-style-type:none;}
#star{position:relative;width:600px;margin:10px auto;}
#star ul,#star span{float:left;display:inline;height:19px;line-height:19px;}
#star ul{margin:0 10px;}
#star li{float:left;width:24px;cursor:pointer;text-indent:-9999px;background:url(images/star.png) no-repeat;}
#star strong{color:#f60;padding-left:10px;}
#star li.on{background-position:0 -28px;}
#star p{position:absolute;top:20px;width:159px;height:60px;display:none;background:url(images/icon.gif) no-repeat;padding:7px 10px 0;}
#star p em{color:#f60;display:block;font-style:normal;}
</style>
<script type="text/javascript"> 
window.onload = function ()
{
 var oStar = document.getElementById("star");
 var aLi = oStar.getElementsByTagName("li");
 var oUl = oStar.getElementsByTagName("ul")[0];
 var oSpan = oStar.getElementsByTagName("span")[1];
 var oP = oStar.getElementsByTagName("p")[0];
 var i = iScore = iStar = 0;
 var aMsg = [
    "很不满意|差得太离谱,与卖家描述的严重不符,非常不满",
    "不满意|部分有破损,与卖家描述的不符,不满意",
    "一般|质量一般,没有卖家描述的那么好",
    "满意|质量不错,与卖家描述的基本一致,还是挺满意的",
    "非常满意|质量非常好,与卖家描述的完全一致,非常满意"
    ]
 for (i = 1; i <= aLi.length; i++)
 {
  aLi[i - 1].index = i;
  //鼠标移过显示分数
  aLi[i - 1].onmouseover = function ()
  {
   fnPoint(this.index);
   //浮动层显示
   oP.style.display = "block";
   //计算浮动层位置
   oP.style.left = oUl.offsetLeft + this.index * this.offsetWidth - 104 + "px";
   //匹配浮动层文字内容
   oP.innerHTML = "<em><b>" + this.index + "</b> 分 " + aMsg[this.index - 1].match(/(.+)\|/)[1] + "</em>" + aMsg[this.index - 1].match(/\|(.+)/)[1]
  };
  //鼠标离开后恢复上次评分
  aLi[i - 1].onmouseout = function ()
  {
   fnPoint();
   //关闭浮动层
   oP.style.display = "none"
  };
  //点击后进行评分处理
  aLi[i - 1].onclick = function ()
  {
   iStar = this.index;
   oP.style.display = "none";
   oSpan.innerHTML = "<strong>" + (this.index) + " 分</strong> (" + aMsg[this.index - 1].match(/\|(.+)/)[1] + ")"
  }
 }
 //评分处理
 function fnPoint(iArg)
 {
  //分数赋值
  iScore = iArg || iStar;
  for (i = 0; i < aLi.length; i++) aLi[i].className = i < iScore ? "on" : "";
 }
};
</script>
</head>
<body>
<div id="star">
 <span>点击星星就能打分</span>
 <ul>
 <li><a href="javascript:;">1</a></li>
 <li><a href="javascript:;">2</a></li>
 <li><a href="javascript:;">3</a></li>
 <li><a href="javascript:;">4</a></li>
 <li><a href="javascript:;">5</a></li>
 </ul>
 <span></span>
 <p></p>
</div>
</body>
</html>

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
JavaScript 克隆数组最简单的方法
Feb 12 Javascript
JavaScript 验证浏览器是否支持javascript的方法小结
May 17 Javascript
JSON 教程 json入门学习笔记
Sep 22 Javascript
javascript 在firebug调试时用console.log的方法
May 10 Javascript
JavaScript中的字符串操作详解
Nov 12 Javascript
微信小程序的动画效果详解
Jan 18 Javascript
js单页hash路由原理与应用实战详解
Aug 14 Javascript
微信小程序实现多选功能
Nov 04 Javascript
node.js实现为PDF添加水印的示例代码
Dec 05 Javascript
使用post方法实现json往返传输数据的方法
Mar 30 Javascript
vue+element实现图片上传及裁剪功能
Jun 29 Javascript
Vue组件间数据传递的方式(3种)
Jul 13 Javascript
jQuery实现仿QQ空间装扮预览图片的鼠标提示效果代码
Oct 30 #Javascript
jQuery密码强度检测插件passwordStrength用法实例分析
Oct 30 #Javascript
基于jQuery实现的美观星级评论打分组件代码
Oct 30 #Javascript
jQuery实现的个性化返回底部与返回顶部特效代码
Oct 30 #Javascript
自己动手写的javascript前端等待控件
Oct 30 #Javascript
jQuery实现的仿百度分页足迹效果代码
Oct 30 #Javascript
JavaScript获取function所有参数名的方法
Oct 30 #Javascript
You might like
php不用内置函数对数组排序的两个算法代码
2010/02/08 PHP
PHP中一些可以替代正则表达式函数的字符串操作函数
2014/11/17 PHP
PHP下载生成的csv文件及问题总结
2015/08/06 PHP
浅谈PHP中的
2016/04/23 PHP
php简单实现多语言切换的方法
2016/05/09 PHP
YII框架关联查询操作示例
2019/04/29 PHP
再谈IE中Flash控件的自动激活 ObjectWrap
2007/03/09 Javascript
Jquery 获取对象的几种方式介绍
2014/01/17 Javascript
bootstrap datepicker 与bootstrapValidator同时使用时选择日期后无法正常触发校验的解决思路
2016/09/28 Javascript
BootStrap的两种模态框方式
2017/05/10 Javascript
微信小程序 检查接口状态实例详解
2017/06/23 Javascript
详解Webpack+Babel+React开发环境的搭建的方法步骤
2018/01/09 Javascript
vue实现多个元素或多个组件之间动画效果
2018/09/25 Javascript
vue与iframe之间的信息交互的实现
2020/04/08 Javascript
[47:02]2018DOTA2亚洲邀请赛3月29日 小组赛B组 VP VS paiN
2018/03/30 DOTA
python构造icmp echo请求和实现网络探测器功能代码分享
2014/01/10 Python
Python多线程中阻塞(join)与锁(Lock)使用误区解析
2018/04/27 Python
对python pandas读取剪贴板内容的方法详解
2019/01/24 Python
利用python在大量数据文件下删除某一行的例子
2019/08/21 Python
opencv-python 提取sift特征并匹配的实例
2019/12/09 Python
使用Tensorflow将自己的数据分割成batch训练实例
2020/01/20 Python
Python开发入门——迭代的基本使用
2020/09/03 Python
美国在线鞋类零售商:LifeStride
2019/06/09 全球购物
C#笔试题
2015/07/14 面试题
linux面试题参考答案(1)
2016/01/22 面试题
公关关系专员的自我评价分享
2013/11/20 职场文书
小学少先队活动方案
2014/02/18 职场文书
公司聘任书模板
2014/03/29 职场文书
校园绿化美化方案
2014/06/08 职场文书
多媒体教室标语
2014/06/26 职场文书
行政处罚告知书
2015/07/01 职场文书
大学学生会主席竞选稿
2015/11/19 职场文书
2016入党积极分子党课培训心得体会
2016/01/06 职场文书
会议开幕致辞怎么写
2016/03/03 职场文书
go语言使用Casbin实现角色的权限控制
2021/06/26 Golang
Win11局域网共享权限在哪里设置? Win11高级共享的设置技巧
2022/04/05 数码科技