JS原生与jQuery实现淘宝五星好评交互效果
作者:纸飞机时间:2026-10-24 23:28:40浏览:165
本文详细解析了利用JavaScript原生DOM操作与jQuery库分别实现淘宝五星好评特效的代码逻辑。通过onmouseover、onmouseout及onclick三个核心事件,演示了鼠标悬停高亮、离开还原及点击选中的交互过程,提供完整HTML结构与脚本示例供开发者参考。
JS与jQuery实现五星好评特效
本文分享使用JavaScript和jQuery两种技术栈实现淘宝五星好评特效的具体代码方案,供读者参考学习。
实现该五星好评功能的核心逻辑主要依赖于鼠标交互中的三个关键事件:
onmouseover:处理鼠标指针移入元素时的事件响应。
onmouseout:处理鼠标指针移出元素时的事件响应。
onclick:处理用户点击元素时的事件响应。

具体代码实现如下所示:
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动态构建复杂嵌套JSON对象的方法
2026-11-05 15:41:52
JS负数取余为什么是负数?详解余数与模运算区别
2026-11-05 13:34:41
JS 解压出现乱码或报错怎么解决?
2026-11-05 12:32:38
JS 中 startsWith、indexOf 与正则判断字符串前缀的对比
2026-11-04 22:19:43
JS解析Excel后怎么将数据转换为JSON格式
2026-11-04 20:58:28
