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 相关文章推荐
浅析Prototype的模板类 Template
Dec 07 Javascript
利用JQuery动画制作滑动菜单项效果实现步骤及代码
Feb 07 Javascript
js批量设置样式的三种方法不推荐使用with
Feb 25 Javascript
JavaScript字符串对象的concat方法实例(用于连接两个或多个字符串)
Oct 16 Javascript
js数组的基本操作(很全自己整理的)
Oct 16 Javascript
javascript中eval和with用法实例总结
Nov 30 Javascript
AngularJS中transclude用法详解
Nov 03 Javascript
使用jQuery卸载全部事件的思路详解
Apr 03 jQuery
javascript 判断一个对象为数组的方法
May 03 Javascript
详解用node搭建简单的静态资源管理器
Aug 09 Javascript
解决在vue项目中,发版之后,背景图片报错,路径不对的问题
Mar 06 Javascript
vue项目配置sass及引入外部scss文件
Apr 14 Vue.js
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
Mysql数据库操作类( 1127版,提供源码下载 )
2010/12/02 PHP
奇怪的PHP引用效率问题分析
2012/03/23 PHP
ThinkPHP 连接Oracle数据库的详细教程[全]
2012/07/16 PHP
zend framework文件上传功能实例代码
2013/12/25 PHP
php+ajax注册实时验证功能
2016/07/20 PHP
PHP获取真实客户端的真实IP
2017/03/07 PHP
javascript中的作用域和闭包详解
2016/01/13 Javascript
页面get请求 中文参数方法乱码问题的快速解决方法
2016/05/31 Javascript
JavaScript仿支付宝6位数字密码输入框
2016/12/29 Javascript
详解基于vue-cli优化的webpack配置
2017/11/06 Javascript
详解如何在angular2中获取节点
2017/11/23 Javascript
js删除数组中的元素delete和splice的区别详解
2018/02/03 Javascript
Vue+mui实现图片的本地缓存示例代码
2018/05/24 Javascript
cordova+vue+webapp使用html5获取地理位置的方法
2019/07/06 Javascript
解决vue admin element noCache设置无效的问题
2019/11/12 Javascript
jQuery HTML css()方法与css类实例详解
2020/05/20 jQuery
理解JavaScript中的对象
2020/08/25 Javascript
跟老齐学Python之Python文档
2014/10/10 Python
讲解Python中的递归函数
2015/04/27 Python
python 判断是否为正小数和正整数的实例
2017/07/23 Python
解决Django数据库makemigrations有变化但是migrate时未变动问题
2018/05/30 Python
python 从文件夹抽取图片另存的方法
2018/12/04 Python
python 服务器运行代码报错ModuleNotFoundError的解决办法
2020/09/16 Python
python 实现一个简单的线性回归案例
2020/12/17 Python
canvas画图被放大且模糊的解决方法
2020/08/11 HTML / CSS
NBA德国官方网上商店:NBA Store德国
2018/04/13 全球购物
澳大利亚一站式数码相机商店:CameraPro
2020/03/09 全球购物
银行实习鉴定
2013/12/13 职场文书
迟到检讨书900字
2014/01/14 职场文书
初三学习计划书范文
2014/04/30 职场文书
某某同志考察材料
2014/05/28 职场文书
护理学院专科毕业生求职信
2014/06/28 职场文书
合伙经营协议书范本
2014/09/13 职场文书
支行行长岗位职责
2015/02/15 职场文书
2019求职信:应届生求职信范文
2019/04/24 职场文书
MongoDB数据库部署环境准备及使用介绍
2022/03/21 MongoDB