JavaScript制作淘宝星级评分效果的思路


Posted in Javascript onJune 23, 2020

小编也是刚开始学JavaScript,觉得淘宝评星效果很棒,于是产生了自己写一个的想法,先给大家分享一下实现效果:

JavaScript制作淘宝星级评分效果的思路

现附上自己写的源代码

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <script language="JavaScript" type="text/javascript">
 function star(n)
 {
  var array=new Array();
  array[0]=document.getElementById("oneStar");
  array[1]=document.getElementById("twoStar");
  array[2]=document.getElementById("threeStar");
  array[3]=document.getElementById("fourStar");
  array[4]=document.getElementById("fiveStar");
  for(var i=0;i<=n;i++)
  {
  array[i].innerText="★";
  }
  for( var j=4;j>n;j--)
  {
  array[j].innerText="☆";
  }
  document.getElementById("evaluate").innerText="您的评价是"+(n+1)+"星";
 }
 </script>
 <title>评星</title>
</head>
<body>
<strong>请您对我们作出评价:</strong>
<span id="star">
 <span style="cursor: pointer " onclick="star(0)"id="oneStar" >☆</span>
 <span style="cursor: pointer " onclick="star(1)" id="twoStar" >☆</span>
 <span style="cursor: pointer " onclick="star(2)" id="threeStar" >☆</span>
 <span style="cursor: pointer " onclick="star(3)" id="fourStar" >☆</span>
 <span style="cursor: pointer " onclick="star(4)" id="fiveStar" >☆</span>
</span><span id="evaluate"></span>

</body>
</html>

一开始的时候用了两个for循环就是这样的:

for(var i=0;i<=n;i++)
  {
  document.getElementById("fiveStar").innerText="★";
  }
  for( var j=4;j>n;j--)
  {
  document.getElementById("fiveStar").innerText="☆";
  }

大神们估计已经看出来了,在for循环之后HTML里的span已经失去了作用,也就是说它只能评价一次.....
于是顺着这个思路想到了用数组解决这个问题,就是让评星效果里的每一颗星储存到数组里,写出了上述的代码,可楼主还犯了一个小错误,着实困恼了许久....
array[0]=document.getElementById("oneStar").innerText;
通过这样定义的数组....结果可想而知,后面的代码根本无法改变评星,后来意识到,这样的定义直接将ID为onestar的元素的内容赋值给了数组,也就是说数组成了一个指向数组的指针....自然无法改变对应元素的值.后来总算明白了....
之后又加了一些CSS效果
成品是这样的:

<!DOCTYPE html>
<head>
 <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
 <title>淘宝评分效果</title>
 <style type="text/css">
 ul, li {margin: 0; padding: 0; border: 0;}
 .shop-rating {
  height: 25px;
  overflow: hidden;
  zoom: 1;
  padding: 2px 0;
  position: relative;
  z-index: 999;
  font:12px Arial;
  color:#000;
  line-height:1.2em
 }
 .shop-rating span {
  height: 23px;
  display: block;
  line-height: 23px;
  float: left;
 }
 .shop-rating span.title {
  width: 125px;
  text-align: right;
  margin-right: 5px;
 }
 .shop-rating ul {
  float: left;
 }
 .shop-rating .result {
  margin-left: 20px;
  padding-top: 2px;
 }
 .shop-rating .result span {
  color: #ff6d02;
 }
 .rating-level,
 .rating-level a {
  background: url(//img.jbzj.com/demoimg/201007/o_star.png) no-repeat scroll 1000px 1000px;
 }
 .rating-level {
  background-position: 0px 0px;
  width: 120px;
  height: 23px;
  position: relative;
  z-index: 1000;
 }
 .shop-rating .result em {
  color: #f60;
  font-family: arial;
  font-weight: bold;
 }
 .rating-level li {
  display: inline;
 }
 .rating-level a {
  line-height: 23px;
  height: 23px;
  position: absolute;
  top: 0px;
  left: 0px;
  text-indent: -999em;
  *zoom: 1;
  outline: none;
 }
 .rating-level a.one-star {
  width: 20%;
  z-index: 6;
 }
 .rating-level a.two-stars {
  width: 40%;
  z-index: 5;
 }
 .rating-level a.three-stars {
  width: 60%;
  z-index: 4;
 }
 .rating-level a.four-stars {
  width: 80%;
  z-index: 3;
 }
 .rating-level a.five-stars {
  width: 100%;
  z-index: 2;
 }
 .rating-level .current-rating, .rating-level a:hover {background-position:0 -28px}
 .rating-level a.one-star:hover,.rating-level a.two-stars:hover,.rating-level a.one-star.current-rating,.rating-level a.two-stars.current-rating{background-position:0 -116px;}
 .rating-level .three-stars .current-rating,.rating-level .four-stars .current-rating,.rating-level .five-stars .current-rating{background-position:0 -28px;}
 </style>
</head>
<body>
<div class="shop-rating">
 <span class="title">你对我人品的评价:</span>
 <ul class="rating-level" id="stars2">
 <li><a href="javascript:void(0);" class="one-star" star:value="20">20</a></li>
 <li><a href="javascript:void(0);" class="two-stars" star:value="40">40</a></li>
 <li><a href="javascript:void(0);" class="three-stars" star:value="60">60</a></li>
 <li><a href="javascript:void(0);" class="four-stars" star:value="80">80</a></li>
 <li><a href="javascript:void(0);" class="five-stars" star:value="100">100</a></li>
 </ul>
 <span id="stars2-tips" class="result"></span>
 <input type="hidden" id="stars2-input" name="b" value="" size="2" />
</div>
<script>
 var TB = function() {
 var T$ = function(id) { return document.getElementById(id) }
 var T$$ = function(r, t) { return (r || document).getElementsByTagName(t) }
 var Stars = function(cid, rid, hid, config) {
  var lis = T$$(T$(cid), 'li'), curA;
  for (var i = 0, len = lis.length; i < len; i++) {
  lis[i]._val = i;
  lis[i].onclick = function() {
   T$(rid).innerHTML = '<em>' + (T$(hid).value = T$$(this, 'a')[0].getAttribute('star:value')) + '分</em> - ' + config.info[this._val];
   curA = T$$(T$(cid), 'a')[T$(hid).value / config.step - 1];
  };
  lis[i].onmouseout = function() {
   curA && (curA.className += config.curcss);
  }
  lis[i].onmouseover = function() {
   curA && (curA.className = curA.className.replace(config.curcss, ''));
  }
  }
 };
 return {Stars: Stars}
 }().Stars('stars2', 'stars2-tips', 'stars2-input', {
 'info' : ['人品极差', '人品不咋地', '人品一般吧', '人品不错', '人品极好啊'],
 'curcss': ' current-rating',
 'step': 20
 });
</script>
</body>
</html>

以上就是JavaScript制作淘宝星级评分效果的思路,语言很直白,易理解,希望对大家的学习有所帮助,和小编一起去探索javascript更多的神奇之处,共同进步。

Javascript 相关文章推荐
prototype 学习笔记整理
Jul 17 Javascript
jquery 插件学习(四)
Aug 06 Javascript
JSON+JavaScript处理JSON的简单例子
Mar 20 Javascript
JS实现切换标签页效果实例代码
Nov 01 Javascript
jQuery随机密码生成的方法
Mar 09 Javascript
JS动画效果打开、关闭层的实现方法
May 09 Javascript
javascript作用域问题实例分析
Jul 13 Javascript
Angular 4依赖注入学习教程之Injectable装饰器(六)
Jun 04 Javascript
关于TypeScript中import JSON的正确姿势详解
Jul 25 Javascript
jQuery点击页面其他部分隐藏下拉菜单功能
Nov 27 jQuery
微信小程序实现滑动切换自定义页码的方法分析
Dec 29 Javascript
图文讲解vue的v-if使用方法
Feb 11 Javascript
jquery动态增加删减表格行特效
Nov 20 #Javascript
跟我学习javascript的异步脚本加载
Nov 20 #Javascript
JavaScript获取各大浏览器信息图示
Nov 20 #Javascript
跟我学习javascript创建对象(类)的8种方法
Nov 20 #Javascript
跟我学习javascript的最新标准ES6
Nov 20 #Javascript
详解JavaScript语言的基本语法要求
Nov 20 #Javascript
每天一篇javascript学习小结(面向对象编程)
Nov 20 #Javascript
You might like
一个PHP验证码类代码分享(已封装成类)
2011/07/17 PHP
解析如何去掉CodeIgniter URL中的index.php
2013/06/25 PHP
php采用file_get_contents代替使用curl实例
2014/11/07 PHP
PHP如何通过AJAX方式实现登录功能
2015/11/23 PHP
PHP $O00OO0=urldecode &amp; eval 解密,记一次商业源码的去后门
2020/09/13 PHP
破除网页鼠标右键被禁用的绝招大全
2006/12/27 Javascript
JavaScript常用的弹出广告及背投广告实现方法
2015/02/06 Javascript
jquery实现点击向下展开菜单项(伸缩导航)效果
2015/08/22 Javascript
jQuery ui实现动感的圆角渐变网站导航菜单效果代码
2015/08/26 Javascript
微信小程序实现tab和swiper切换结合效果
2020/07/17 Javascript
解决vue props 拿不到值的问题
2018/09/11 Javascript
vue2.0 路由模式mode=&quot;history&quot;的作用
2018/10/18 Javascript
命令行批量截图Node脚本示例代码
2019/01/25 Javascript
vue实现新闻展示页的步骤详解
2019/04/11 Javascript
详解JavaScript中new操作符的解析和实现
2020/09/04 Javascript
antd Select下拉菜单动态添加option里的内容操作
2020/11/02 Javascript
[29:59]完美世界DOTA2联赛PWL S3 Forest vs access 第二场 12.11
2020/12/13 DOTA
Python中用memcached来减少数据库查询次数的教程
2015/04/07 Python
Python实现telnet服务器的方法
2015/07/10 Python
Python中django学习心得
2017/12/06 Python
python进阶之多线程对同一个全局变量的处理方法
2018/11/09 Python
如何实现Django Rest framework版本控制
2019/07/25 Python
DJango的创建和使用详解(默认数据库sqlite3)
2019/11/18 Python
python 变量初始化空列表的例子
2019/11/28 Python
Python-openpyxl表格读取写入的案例详解
2020/11/02 Python
Python制作简单的剪刀石头布游戏
2020/12/10 Python
台湾SHOPRO购物行家:亚洲首创影视.3C.家电.优质购物平台
2018/05/07 全球购物
高校毕业生登记表自我鉴定
2013/11/03 职场文书
会计系中文个人求职信
2013/12/24 职场文书
爱心捐款倡议书范文
2014/05/12 职场文书
学生党员公开承诺书
2014/05/28 职场文书
弘扬焦裕禄精神走群众路线思想汇报
2014/09/12 职场文书
通报表扬范文
2015/01/17 职场文书
演讲开场白台词大全
2015/05/29 职场文书
python 如何获取页面所有a标签下href的值
2021/05/06 Python
React如何使用axios请求数据并把数据渲染到组件
2022/08/05 Javascript