以下是一个简单的JavaScript实现星级评分效果的代码示例。这个示例使用了HTML来创建星级的显示,并使用JavaScript来处理点击事件,以更新选中的星级数。
HTML部分(index.html):
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>星级评分效果</title>
<style>
.star {
color: grey; /* 默认颜色为灰色 */
cursor: pointer;
}
.star.filled {
color: gold; /* 选中后颜色为金色 */
}
</style>
</head>
<body>
<div id="star-rating">
<span class="star">★</span>
<span class="star">★</span>
<span class="star">★</span>
<span class="star">★</span>
<span class="star">★</span>
</div>
<script src="rating.js"></script>
</body>
</html>
JavaScript部分(rating.js):
document.addEventListener('DOMContentLoaded', function() {
const stars = document.querySelectorAll('#star-rating .star');
stars.forEach((star, index) => {
star.addEventListener('click', function() {
// 移除之前所有星星的filled类
stars.forEach(s => s.classList.remove('filled'));
// 为当前点击及之前的星星添加filled类
for (let i = 0; i <= index; i++) {
stars[i].classList.add('filled');
}
});
});
// 如果需要处理鼠标悬停效果,可以添加以下代码
// 注意:这里为了简洁,未添加悬停效果的具体实现
// 你可以通过添加mouseenter和mouseleave事件监听器来实现
});
在这个例子中,我创建了一个包含五个星星的评分系统。每个星星都是一个``元素,它们默认是灰色的。当用户点击一个星星时,这个星星以及它之前的所有星星都会变成金色,表示用户选中的评分。
请注意,这个示例仅处理了点击事件,如果你还需要处理鼠标悬停(hover)效果,你可以在JavaScript中添加相应的`mouseenter`和`mouseleave`事件监听器,并相应地更新星星的样式。但为了保持代码的简洁性,这里并没有包含悬停效果的实现。