五星好评的详细步骤
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<title></title>
<style>
#ul {
padding: 0;
margin: 0;
list-style: none;
display: inline-block;
vertical-align: middle;
height: 28px;
}
#div {
display: inline-block;
vertical-align: middle;
margin-left: 10px;
}
#ul li {
float: left;
background: gray;
width: 27px;
height: 28px;
margin: 10px;
}
#ul li.active {
background: red;
}
</style>
</head>
<body>
<ul id="ul">
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
<!-- <div id="div"></div> -->
</body>
<script>
var oli = document.querySelectorAll("#ul li");
//设置一个变量为-1,原因是差评的数量可能是没有,最小的下线取值可以到0;
var point = -1;
//设置每一个元素的角标
for (var i = 0; i < oli.length; i++) {
oli[i].index = i;
}
ul.onmouseover = function (e) {
var ev = event || e;
var target = ev.target || ev.srcElement;
//鼠标经过,通过角标计数一次;
if (target.tagName === "LI") {
var count = target.index;
for (var i = 0; i <= count; i++) {
oli[i].classList.add("active");
}
}
};
ul.onmouseout = function () {
for (var i = 0; i < oli.length; i++) {
if (i <= point) {
oli[i].classList.add("active");
} else {
oli[i].classList.remove("active");
}
}
};
ul.onclick=function(e){
var ev=event||ev;
var target=ev.target||ev.srcElement;
if(target.tagName==='LI'){
//鼠标点击一次计数,当鼠标等级的最小次数小于等于-1的时候,就结束循环,因为差评的话也有可能是小于等于-1的
var count=target.index;
if(count<=point)return;
point=target.index;
}
}
</script>
<!-- <script>
var oli = document.querySelectorAll("#ul li");
var div = document.querySelector("#div");
var point = -1;
//设置角标的获取;
for (var i = 0; i < oli.length; i++) {
oli[i].index = i;
}
//委托事件
ul.onmouseover = function (e) {
var ev = event || e;
var target = ev.target || ev.srcElement;
if (target.tagName === "LI") {
var count=target.index;
for (var i = 0; i <=count; i++) {
oli[i].classList.add("active");
}
}
};
ul.onmouseout=function(){
for(var i=0;i<oli.length;i++){
if(i<=point){
oli[i].classList.add('active');
}else{
oli[i].classList.remove('active')
}
}
}
ul.onclick=function(e){
var ev=event||e;
var target=ev.target||ev.srcElement;
if(target.tagName==='LI'){
var count=target.index;
if(count<=point)return;
point =target.index;
}
}
</script> -->
<!-- <script>
var oli = document.querySelectorAll("#ul li");
var div = document.querySelector("#div");
var point = -1;
for (var i = 0; i < oli.length; i++) {
oli[i].index = i;
}
ul.onmouseover = function (e) {
var ev = event || e;
var target = ev.target || ev.srcElement;
if (target.tagName === "LI") {
var count = target.index;
for (var i = 0; i <= count; i++) {
oli[i].classList.add("active");
}
}
};
ul.onmouseout = function () {
for (var i = 0; i < oli.length; i++) {
if (i <= point) {
oli[i].classList.add("active");
} else {
oli[i].classList.remove("active");
}
}
};
ul.onclick = function (e) {
var ev = event || e;
var target = ev.target || ev.srcElement;
//核心思想通过角标找到对应的小盒子,还用到了标签名的结果返回值大写字母
if (target.tagName === "LI") {
var count = target.index;
if (count <= point) {
return;
}
point = target.index;
}
};
</script> -->
</html>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通