JS原生与jQuery实现淘宝五星好评交互效果

作者:纸飞机

时间:2026-10-24

浏览:164

本文详细解析了利用JavaScript原生DOM操作与jQuery库分别实现淘宝五星好评特效的代码逻辑。通过onmouseover、onmouseout及onclick三个核心事件,演示了鼠标悬停高亮、离开还原及点击选中的交互过程,提供完整HTML结构与脚本示例供开发者参考。

文章目录

JS与jQuery实现五星好评特效

本文分享使用JavaScript和jQuery两种技术栈实现淘宝五星好评特效的具体代码方案,供读者参考学习。

实现该五星好评功能的核心逻辑主要依赖于鼠标交互中的三个关键事件:

onmouseover:处理鼠标指针移入元素时的事件响应。

onmouseout:处理鼠标指针移出元素时的事件响应。

onclick:处理用户点击元素时的事件响应。

JS与jQuery实现五星好评特效

具体代码实现如下所示:

JavaScript原生实现方案

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title></title>
    <script>
        var clickIndex = -1;
        onload = function () {
            //获取所有的img标签
            var imgs = document.getElementsByTagName('img');
            //遍历所有图片对象,为每个图片注册指向事件
            for (var index in imgs) {
                imgs[index].onmouseover = function () {
                    //将当前的及之前的图片变黄,之后的变为灰色
                    var id = this.id;//获取当前元素的id
                    for (var i = 0; i < imgs.length; i++) {
                        //当前元素之前的元素
                        if (i <= id) {
                            //star2为黄色图片
                            imgs[i].src = 'images/star2.png';
                        }
                        else {
                            //当前元素之后的图片,颜色为灰色
                            imgs[i].src = 'images/star1.png';
                        }
                    }
                };
                //为每个图片对象注册移开事件
                imgs[index].onmouseout = function () {
                    //被点击项之前的元素为黄色
                    for (var i = 0; i <= clickIndex; i++) {
                        imgs[i].src = 'images/star2.png';
                    }
                    for (var i = clickIndex + 1; i < imgs.length; i++) {
                        //被点击项之后的元素为灰色
                        imgs[i].src = 'images/star1.png';
                    }
                };
                //为每个图片注册点击事件
                imgs[index].onclick = function () {
                    //记录下来被点的图片编号,编号与索引对应
                    clickIndex = parseInt(this.id);
                };
            }
        }; 
     
    </script>
</head>
<body>
    <img id="0" src="images/star1.png" />
    <img id="1" src="images/star1.png" />
    <img id="2" src="images/star1.png" />
    <img id="3" src="images/star1.png" />
    <img id="4" src="images/star1.png" />
</body>
</html>

以下是使用jQuery库实现的版本。

jQuery实现方案

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title></title>
    <script src="../js/jquery-3.3.1.min.js"></script>
    <style>
        div{
            width:200px;
            height:200px;
            background-color :pink;     
        }
    </style>
    <script>
        $(function () {
            var wjxs = "★";
            var wjxk = "☆";
            //鼠标进入事件
            $(".comment>li").on("mouseenter", function () {
                $(this).text(wjxs).prevAll().text(wjxs);
                $(this).nextAll().text(wjxk);
            });
            //离开事件,所有的li变成空心
            $(".comment").on("mouseleave", function () {
                $(this).children().text(wjxk);
                // 找到current,让current以及current前面的变成实心
                $("li.current").text(wjxs).prevAll().text(wjxs);
            });
 
            //给li注册点击事件,获取当前元素的位置current
            $(".comment>li").on("click", function () {
                $(this).addClass("current").siblings().removeClass("current");
            });
        });
    </script>
</head>
<body>
    <div>
        <ul class="comment">
            <li>☆</li>
            <li>☆</li>
            <li>☆</li>
            <li>☆</li>
            <li>☆</li>
        </ul>
    </div>
 
</body>
</html>

JS与jQuery实现五星好评特效

以上内容为本文的全部介绍,希望能为读者的编程学习提供有益帮助,同时也感谢大家的支持。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章