• 原生JavaScript实现评分效果


    一、实现原理:

    1、要设置一个“大总管变量”,用于记录点击时的星星下标,只声明不赋值。

    2、移入每个星星时,先把所有的星星恢复到默认状态;再把当前星星及在它之前的星星设为选中状态。

    3、移出每个星星时,先把所有的星星恢复到默认状态;再把大总管变量里记录的星星及在它之前的星星设为选中状态。

    4、点击星星时,把当前星星的下标赋值给大总管变量;再把当前星星及在它之前的星星设为选中状态。

    二、代码展示: 

    <!DOCTYPE html>
    
    <html>
    
    <head>
    
    <title></title>
    
    <style type="text/css">
    
    ul,li{ list-style: none; }
    
    li{display:block;float: left; width: 21px; height: 21px;background: url(https://files.cnblogs.com/files/susufufu/star0.gif) no-repeat;}
    
    li.on{background: url(https://files.cnblogs.com/files/susufufu/star1.gif) no-repeat;}
    
    </style>
    
    </head>
    
    <body>
    
    <ul id="box">
    
    <li></li>
    
    <li></li>
    
    <li></li>
    
    <li></li>
    
    <li></li>
    
    </ul>
    
    <script type="text/javascript">
    
    window.onload = function(){
    
    var lis = document.getElementsByTagName('li');
    
    var lislength = lis.length;
    
    //大总管变量
    
    var num;
    
    for (var i = 0; i < lislength; i++) {
    
    //给每一个li加下标
    
    lis[i].index = i;
    
    lis[i].onmouseover = function(){
    
    //鼠标进入时,先把所有的星星恢复到默认状态
    
    for(var j=0;j<lislength;j++){
    
    lis[j].className = '';
    
    }
    
    // 把当前星星以及它前面的星星设为选中状态
    
    for(var j=0;j<=this.index;j++){
    
    lis[j].className = 'on';
    
    }
    
    };
    
    lis[i].onmouseout = function(){
    
    //鼠标离开时,先把所有的星星恢复到默认状态
    
    for(var j=0;j<lislength;j++){
    
    lis[j].className = '';
    
    }
    
    // 把点击过的星星及它前面的星星设为选中状态
    
    for(var j=0;j<=num;j++){
    
    lis[j].className = 'on';
    
    }
    
    };
    
    lis[i].onclick = function(){
    
    //点击时,把当前的星星下标赋值给大总管变量,再把它前面的星星设为选中状态
    
    num = this.index;
    
    for(var j=0;j<=this.index;j++){
    
    lis[j].className = 'on';
    
    }
    
    }
    
    }
    
    }
    
    </script>
    
    </body>
    
    </html>
  • 相关阅读:
    20200213 超级聊天术
    20220210 java.util.Properties
    20220210 java.util.concurrent.BlockingQueue 方法说明
    20220210 java.util.Queue
    20220210 java.lang.Long
    20220210 Java 反射基础类
    一组很有意思的Principles
    python logging用法的简单总结
    好好的Typora收费了!_2022_01_20
    一些常用的jQuery方法1_20220128
  • 原文地址:https://www.cnblogs.com/javascripter/p/9844346.html
Copyright © 2020-2023  润新知