zoukankan      html  css  js  c++  java
  • 14.JavaScript实现星星评分

    JavaScript实现星星评分:

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
        <style>
            .left {
                float: left;
                margin-left: 10px;
            }
        </style>
    </head>
    
    <body>
        <div id="stars" class="left">
            <img src="./image/empty.png" alt="">
            <img src="./image/empty.png" alt="">
            <img src="./image/empty.png" alt="">
            <img src="./image/empty.png" alt="">
            <img src="./image/empty.png" alt="">
        </div>
        <div id="comment" class="left">
    
        </div>
        <script>
            //制作一个星星评分
            var divStars = document.getElementById("stars");
            var divComment = document.getElementById("comment");
            var attitude = ["", "较差", "一般", "", "很好"];
            var starNum = -1; //记录当前第几颗星星被点击
            var starArray = Array.from(divStars.children); //星星数组
    
            //鼠标移入
            divStars.onmouseover = function (e) {
                if (e.target.tagName === "IMG") { //事件源是图片
                    //把鼠标移动到的星星替换图片
                    e.target.src = "./image/shining.png";
                    //把鼠标移动到的星星之前的星星替换图片
                    var prev = e.target.previousElementSibling;
                    while (prev) {
                        prev.src = "./image/shining.png";
                        prev = prev.previousElementSibling;
                    }
                    //把鼠标移动到的星星之后的星星替换图片
                    var next = e.target.nextElementSibling;
                    while (next) { //把鼠标移动到的星星之后的星星替换图片
                        next.src = "./image/empty.png";
                        next = next.nextElementSibling;
                    }
    
                    var index = starArray.indexOf(e.target); //找到鼠标移动到的星星的序号
                    divComment.innerHTML = attitude[index]; //显示对应的评论
                }
            }
    
            //鼠标点击
            divStars.onclick = function (e) {
                if (e.target.tagName === "IMG") {
                    //记录当前点击的星星序号
                    starNum = starArray.indexOf(e.target);
                }
            }
    
            //鼠标移出
            divStars.onmouseout = function (e) {
                if (starNum !== -1) { //鼠标点击事件发生,将评分固定在点击的星星上
                    for (var i = 0; i < divStars.children.length; i++) {
                        if (i <= starNum) {
                            divStars.children[i].src = "./image/shining.png";
                            
                        } else {
                            divStars.children[i].src = "./image/empty.png";
                        }
                    }
                    divComment.innerHTML = attitude[starNum]; //显示对应的评论
                } else {
                    for (var i = 0; i < divStars.children.length; i++) {
                        divStars.children[i].src = "./image/empty.png";
                    }
                    divComment.innerHTML = ""; //不显示评论
                }
            }
        </script>
    </body>
    
    </html>
    index.html

    代码中有关图片路径的地方要自行替换

    效果展示:

  • 相关阅读:
    比特币的加密算法
    区块链项目-Lisk
    以太坊(二)
    以太坊的货币发行模式
    以太坊(一)
    前端er们如何最快开发h5移动端页面?
    jQuery Ajax常用总结
    js中变量作用域
    网页引入特殊字体的几种方案
    几个有趣的WEB设备API(二)
  • 原文地址:https://www.cnblogs.com/lanshanxiao/p/12783119.html
Copyright © 2011-2022 走看看