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 相关文章推荐
URI、URL和URN之间的区别与联系
Dec 20 Javascript
找出字符串中出现次数最多的字母和出现次数精简版
Nov 07 Javascript
解析JavaScript中的不可见数据类型
Dec 02 Javascript
javascript数组操作总结和属性、方法介绍
Apr 05 Javascript
用javascript关闭本窗口技巧小结
Sep 05 Javascript
ECMA5数组的新增方法有哪些及forEach()模仿实现
Nov 03 Javascript
jQuery插件EasyUI实现Layout框架页面中弹出窗体到最顶层效果(穿越iframe)
Aug 05 Javascript
使用Javascript监控前端相关数据的代码
Oct 27 Javascript
jQuery插件select2利用ajax高效查询大数据列表(可搜索、可分页)
May 19 jQuery
vue动态绑定class选中当前列表变色的方法示例
Dec 19 Javascript
详解微信小程序-canvas绘制文字实现自动换行
Apr 26 Javascript
微信浏览器左上角返回按钮监听的实现
Mar 04 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
laravel 解决paginate查询多个字段报错的问题
2019/10/22 PHP
jQuery的一些注意
2006/12/06 Javascript
javascript中的缓动效果实现程序
2012/12/29 Javascript
javascript禁用Tab键脚本实例
2013/11/22 Javascript
JS长整型精度问题实例分析
2015/01/13 Javascript
js判断手机和pc端选择不同执行事件的方法
2015/01/30 Javascript
javascript转换日期字符串为Date日期对象的方法
2015/02/13 Javascript
jQuery实现Flash效果上下翻动的中英文导航菜单代码
2015/09/22 Javascript
window.onload绑定多个事件的两种解决方案
2016/05/15 Javascript
学习掌握JavaScript中this的使用技巧
2016/08/29 Javascript
JS模拟实现ECMAScript5新增的数组方法
2017/03/20 Javascript
Vue.js实战之组件的进阶
2017/04/04 Javascript
前端跨域的几种解决方式总结(推荐)
2017/08/16 Javascript
详解react服务端渲染(同构)的方法
2017/09/21 Javascript
微信小程序中button组件的边框设置的实例详解
2017/09/27 Javascript
Angular.js中window.onload(),$(document).ready()的写法浅析
2017/09/28 Javascript
浅谈webpack打包之后的文件过大的解决方法
2018/03/07 Javascript
react 兄弟组件如何调用对方的方法示例
2018/10/23 Javascript
关于JavaScript 数组你应该知道的事情(推荐)
2019/04/10 Javascript
详细教你微信公众号正文页SVG交互开发技巧
2019/07/25 Javascript
JavaScript实现简单随机点名器
2019/11/21 Javascript
node使用mysql获取数据库数据中文乱码问题的解决
2019/12/02 Javascript
python数据类型_元组、字典常用操作方法(介绍)
2017/05/30 Python
Python Nose框架编写测试用例方法
2017/10/26 Python
用Pygal绘制直方图代码示例
2017/12/07 Python
Python通过TensorFlow卷积神经网络实现猫狗识别
2019/03/14 Python
Python使用sax模块解析XML文件示例
2019/04/04 Python
Python数据结构与算法(几种排序)小结
2019/06/22 Python
Python 获取命令行参数内容及参数个数的实例
2019/12/20 Python
无需JS和jQuery代码实现CSS3鼠标浮动放大图片
2016/11/21 HTML / CSS
通往英国高街的商店橱窗:Down Your High Street
2020/07/19 全球购物
实习教师个人的自我评价
2013/11/08 职场文书
毕业生自荐书
2014/02/02 职场文书
奠基仪式致辞
2015/07/30 职场文书
维护民族团结心得体会2016
2016/01/15 职场文书
母婴行业实体、电商模式全面解析
2019/08/01 职场文书