JavaScript写一个星星评分代码

以你之姓@ 2021-07-24 19:19 483阅读 0赞
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=GBK">
  5. <style>
  6. *{margin:0;padding:0;list-style-type:none;}
  7. body{font:12px/180% Arial, Helvetica, sans-serif;}
  8. .star_ul li{
  9. text-align: center;
  10. float: left;
  11. margin-right: 1px;
  12. width: 25px;
  13. height: 22px;
  14. font-size: 21px;
  15. background: #DCDCDC;
  16. border-radius: 5px;
  17. opacity: 0.8;
  18. cursor: pointer;
  19. }
  20. .box{
  21. margin: 10px;
  22. left: 35%;
  23. position: absolute;
  24. width: 250px;
  25. }
  26. .result{
  27. margin-left: 10px;
  28. }
  29. </style>
  30. </head>
  31. <body>
  32. <div class='box'>
  33. <span style='float:left;'>评分:</span>
  34. <ul class="star_ul" id='star_ul_id'>
  35. <li title='很差' id='1'></li>
  36. <li title='差' id='2'></li>
  37. <li title='一般' id='3'></li>
  38. <li title='好' id='4'></li>
  39. <li title='很好' id='5'></li>
  40. </ul>
  41. <span id='result' class='result'>请打分</span>
  42. </div>
  43. </body>
  44. <script>
  45. var flag = false;//是否点击
  46. var result = document.getElementById('result');
  47. var star = document.getElementById('star_ul_id');
  48. star.onmouseover=function(e){
  49. var e = e || window.event;
  50. var target = e.target || e.srcElement;
  51. flag=false;//只要鼠标移入就设置为false
  52. gen(target,this);
  53. }
  54. star.onmouseout=function(e){
  55. if(flag) return;//如果鼠标点击选中,则不重置星星状态
  56. for(var i=0;i<this.children.length;i++){
  57. //重置所有星星的颜色
  58. this.children[i].style.background='gainsboro';
  59. }
  60. result.style.color='#333333';
  61. result.innerText="请打分";
  62. }
  63. star.onclick=function(e){
  64. var e = e || window.event;
  65. var target = e.target || e.srcElement;
  66. gen(target,this);
  67. //设置标记为true
  68. flag=true;
  69. }
  70. function gen(target,obj){
  71. var color;
  72. var id = parseInt(target.id);
  73. //根据id来设定颜色
  74. switch (id){
  75. case 1:{
  76. color='#EEC15A';
  77. break;
  78. }
  79. case 2:{
  80. color='#FDB666';
  81. break;
  82. }
  83. case 3:{
  84. color='#FF8D50';
  85. break;
  86. }
  87. case 4:{
  88. color='#FE6A44';
  89. break;
  90. }
  91. case 5:{
  92. color='#E44343';
  93. break;
  94. }
  95. }
  96. var len = id<=obj.children.length?id:this.children.length;
  97. for(var i=0;i<len;i++){
  98. //设置所选星星前面所有星星的颜色、包含自己
  99. obj.children[i].style.background=color;
  100. }
  101. result.style.color='#c00';
  102. result.innerText=target.title;
  103. }
  104. </script>
  105. </html>

效果如下:

20201217191848796.png

发表评论

表情:
评论列表 (有 0 条评论,483人围观)

还没有评论,来说两句吧...

相关阅读

    相关 微信小程序实现星星评分效果

    思路很简单,小星星都是一张张独立的图片,点击的时候改变图片的路径就可以了。 我是用背景图片做的,先给盒子设置背景图片为灰色的小星星,盒子是根据js文件中的stars数组循环