Javascript模仿淘宝信用评价实例(附源码)


Posted in Javascript onNovember 26, 2015

本文实例讲述了Javascript模仿淘宝信用评价实现方法。分享给大家供大家参考,具体如下:

老板昨天开会说:要给公司的购物平台增加信用评价功能,用户体验参考淘宝。

于是今天研究了一下,用jQuery模似一个类似的效果:

Javascript模仿淘宝信用评价实例(附源码)

代码如下:

<!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>
 <title>模仿淘宝的信用评价</title>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript">
  var rateMessage = {
   'rate-1': {
    'rate-1': '差得太离谱,与卖家描述的严重不符,非常不满',
    'rate-2': '部分有破损,与卖家描述的不符,不满意',
    'rate-3': '质量一般,没有卖家描述的那么好',
    'rate-4': '质量不错,与卖家描述的基本一致,还是挺满意的',
    'rate-5': '质量非常好,与卖家描述的完全一致,非常满意'
   },
   'rate-2': {
    'rate-1': '卖家态度很差,还骂人、说脏话,简直不把顾客当回事',
    'rate-2': '卖家有点不耐烦,承诺的服务也兑现不了',
    'rate-3': '卖家回复问题很慢,态度一般,谈不上沟通顺畅',
    'rate-4': '卖家服务挺好的,沟通挺顺畅的,总体满意',
    'rate-5': '卖家的服务太棒了,考虑非常周到,完全超出期望值'
   },
   'rate-3': {
    'rate-1': '再三提醒下,卖家才发货,耽误我的时间,包装也很马虎',
    'rate-2': '卖家发货有点慢的,催了几次终于发货了',
    'rate-3': '卖家发货速度一般,提醒后才发货的',
    'rate-4': '卖家发货挺及时的,运费收取很合理',
    'rate-5': '卖家发货速度非常快,包装非常仔细、严实'
   },
   'rate-4': {
    'rate-1': '物流公司态度非常差,送货慢,外包装有破损',
    'rate-2': '物流公司服务态度挺差,运送速度太慢',
    'rate-3': '物流公司服务态度一般,运送速度一般',
    'rate-4': '物流公司态度还好吧,送货速度挺快的',
    'rate-5': '物流公司服务态度很好,运送速度很快'
   }
  };
  $().ready(function () {
   var starInit = $("#starInit");
   var ulStars = $("#ulStars");
   var txtStar = $("#txtStar");
   var tip = $("#tip");
   var rate_1_result = $("#rate_1_result");
   var star_wrap = $("#star_wrap");
   starInit.hover(function () {
    starInit.hide();
    star_wrap.show();
   })
   var oLis = $("#ulStars li");
   oLis.each(function (i) {
    $(this).click(function () {
     var iStar = parseInt($(this).attr("star"), 10);
     txtStar.val(iStar);
     rate_1_result.html("<span style='color:red'>" + iStar + " 分</span> - " + rateMessage["rate-1"]["rate-" + iStar]);
    }).hover(function () {
     var iStar = parseInt($(this).attr("star"), 10);
     for (var i = 0; i < oLis.length; i++) {
      var _temp = oLis[i];
      if (_temp.attributes["star"].value <= iStar) {
       if (iStar >= 3) {
        _temp.className = "good";
       }
       else {
        _temp.className = "bad";
       }
      }
      else {
       _temp.className = "";
      }
     }
    }, function () {
     if (txtStar.val() != "") {
      var iSelectedStar = parseInt(txtStar.val(), 10);
      for (var i = 0; i < oLis.length; i++) {
       var _temp = oLis[i];
       if (_temp.attributes["star"].value > iSelectedStar) {
        _temp.className = "";
       }
       else {
        var iSelfStar = parseInt(_temp.attributes["star"].value, 10);
        if (iSelfStar >= 3) {
         _temp.className = "good";
        }
        else {
         if (iSelectedStar >= 3) {
          _temp.className = "good";
         }
         else {
          _temp.className = "bad";
         }
        }
       }
      }
     }
    }).mousemove(function (e) {
     var intX = 0, intY = 0;
     if (e == null) {
      e = window.event;
     }
     if (e.pageX || e.pageY) {
      intX = e.pageX; intY = e.pageY;
     }
     else if (e.clientX || e.clientY) {
      if (document.documentElement.scrollTop) {
       intX = e.clientX + document.documentElement.scrollLeft;
       intY = e.clientY + document.documentElement.scrollTop;
      }
      else {
       intX = e.clientX + document.body.scrollLeft;
       intY = e.clientY + document.body.scrollTop;
      }
     }
     var tipbar = tip.get(0);
     tipbar.style.top = (intY + 20) + "px";
     tipbar.style.left = (intX - 95) + "px";
     tipbar.style.display = "";
     var iStar = parseInt($(this).attr("star"), 10);
     tip.html("<span style='color:red'>" + iStar + " 分</span> - " + rateMessage["rate-1"]["rate-" + iStar]);
    }).mouseout(function () {
     tip.hide();
    })
   })
   star_wrap.hover(function () { }, function () {
    setTimeout(initStar, 50);
   })
   ulStars.hover(function () { }, function () { setTimeout(initStar, 50); });
   var initStar = function () {
    if (txtStar.val() == "") {
     star_wrap.hide();
     starInit.show();
     for (var i = 0; i < oLis.length; i++) {
      var _temp = oLis[i];
      _temp.className = "";
     }
    }
   }
  }) 
 </script>
 <style type="text/css">
  * { padding: 0; margin: 0; list-style: none; font-size: 12px; }
  #starBox { margin: 100px; }
  #starInit { width: 120px; height: 36px; overflow: hidden; float: left; }
  #star_wrap, #ulStars { width: 120px; height: 18px; overflow: hidden; float: left; }
  #ulStars li { width: 19px; height: 18px; background: url(bg.gif) no-repeat -278px -96px; float: left; margin-right: 5px; cursor: pointer; }
  #ulStars li.good { background: url(bg.gif) no-repeat -278px -52px; }
  #ulStars li.bad { background: url(bg.gif) no-repeat -278px -73px; }
  #tip { width: 171px; height: 67px; background: url(bg.gif) no-repeat -40px -167px; padding: 15px 3px 0 5px; line-height: 18px; }
  #txtStar { position: absolute; left: 0; top: -30px; }
  #rate_1_result { float: left; line-height: 25px; text-indent: 15px; color: Red; }
 </style>
</head>
<body>
 <div id="starBox">
  <div id="starInit">
   <img src="star_init.gif" alt="点击星星即可评分" />
  </div>
  <div id="star_wrap" style="display: none">
   <ul id="ulStars">
    <li star="1"></li>
    <li star="2"></li>
    <li star="3"></li>
    <li star="4"></li>
    <li star="5"></li>
   </ul>
  </div>
  <div id="rate_1_result">←点击星星就能评价了</div>
  <input type="text" id="txtStar" style="width: 30px" value="" />
  <div id="tip" style="position: absolute; display: none"></div>
 </div>
</body>
</html>

完整实例代码代码点击此处本站下载。

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

Javascript 相关文章推荐
JavaScript设计模式之工厂方法模式介绍
Dec 28 Javascript
基于jquery实现简单的手风琴特效
Nov 24 Javascript
基于AngularJS+HTML+Groovy实现登录功能
Feb 17 Javascript
json的使用小结
Jun 08 Javascript
jQuery实现对无序列表的排序功能(附demo源码下载)
Jun 25 Javascript
javascript+jQuery实现360开机时间显示效果
Nov 03 jQuery
vue translate peoject实现在线翻译功能【新手必看】
Jun 07 Javascript
JavaScript设计模式之工厂模式和抽象工厂模式定义与用法分析
Jul 26 Javascript
使用Node.js实现一个多人游戏服务器引擎
Mar 13 Javascript
JavaScript实现单英文金山打字通
Jul 24 Javascript
js实现圆形显示鼠标单击位置
Feb 11 Javascript
ant design charts 获取后端接口数据展示
May 25 Javascript
Javascript BOM学习小结(六)
Nov 26 #Javascript
js实现延时加载Flash的方法
Nov 26 #Javascript
学习JavaScript设计模式(链式调用)
Nov 26 #Javascript
学习JavaScript设计模式(继承)
Nov 26 #Javascript
js图片跟随鼠标移动代码
Nov 26 #Javascript
学习JavaScript设计模式(封装)
Nov 26 #Javascript
JS实现密码框根据焦点的获取与失去控制文字的消失与显示效果
Nov 26 #Javascript
You might like
php文件缓存类汇总
2014/11/21 PHP
PHP获取QQ达人QQ信息的方法
2015/03/05 PHP
PHP开发之用微信远程遥控服务器
2018/01/25 PHP
刷新时清空文本框内容的js代码
2007/04/23 Javascript
jQuery实现的立体文字渐变效果
2010/05/17 Javascript
php对mongodb的扩展(小试牛刀)
2012/11/11 Javascript
防止文件缓存的js代码
2013/01/10 Javascript
JavaScript 对任意元素,自定义右键菜单的实现方法
2013/05/08 Javascript
JQuery表格拖动调整列宽效果(自己动手写的)
2014/09/01 Javascript
js实现向右横向滑出的二级菜单效果
2015/08/27 Javascript
Jquery组件easyUi实现手风琴(折叠面板)示例
2016/08/23 Javascript
老生常谈jacascript DOM节点获取
2017/04/17 Javascript
JS/jquery实现一个网页内同时调用多个倒计时的方法
2017/04/27 jQuery
react-router4按需加载(踩坑填坑)
2019/01/06 Javascript
Electron实现应用打包、自动升级过程解析
2020/07/07 Javascript
js里面的变量范围分享
2020/07/18 Javascript
[09:23]国际邀请赛采访专栏:iG战队VK,Tongfu战队Cu
2013/08/05 DOTA
[00:58]他们到底在电话里听到了什么?
2017/11/21 DOTA
Python运用于数据分析的简单教程
2015/03/27 Python
wxPython定时器wx.Timer简单应用实例
2015/06/03 Python
django解决跨域请求的问题
2018/11/11 Python
python 用opencv调用训练好的模型进行识别的方法
2018/12/07 Python
使用pickle存储数据dump 和 load实例讲解
2019/12/30 Python
Python编程快速上手——PDF文件操作案例分析
2020/02/28 Python
python 日志 logging模块详细解析
2020/03/31 Python
python实现对变位词的判断方法
2020/04/05 Python
英国电视和家用电器购物网站:rlrdistribution.co.uk
2018/11/20 全球购物
法国在线药房:DoctiPharma
2020/10/21 全球购物
优秀会计求职信
2014/07/04 职场文书
本科应届生求职信
2014/08/05 职场文书
刑事代理授权委托书
2014/09/17 职场文书
不听老师话的万能检讨书
2014/10/04 职场文书
2014年施工员工作总结
2014/11/18 职场文书
党校党性分析材料
2014/12/19 职场文书
老干部局2015年度工作总结
2015/10/22 职场文书
Nginx 匹配方式
2022/05/15 Servers