js 点击星星打分代码
<divid="star"><span>点击星星就能打分</span><ul><li><ahref="javascript:;">1</a></li><li><ahref="javascript:;">2</a></li><li><ahref="javascript:
<div id="star"> <span>点击星星就能打分</span> <ul> <li><a href="javascript:;">1</a></li> <li><a href="javascript:;">2</a></li> <li><a href="javascript:;">3</a></li> <li><a href="javascript:;">4</a></li> <li><a href="javascript:;">5</a></li> </ul> <span></span> <p>选择解释</p> </div> <style> body { color: #666; font: 12px/2 Arial; } #star { margin: 10px auto; /* border: 1px solid red; */ width: 800px; position: relative; /*设置定位给p标签参考*/ } ul { list-style-type: none; /* border: 1px solid green; */ margin: 0px 10px; /*必须设置外边距才能上去*/ } ul, span { float: left; } ul li { float: left; background: url('./images/star2.png') no-repeat; background-position: 0 -69px; text-indent: -9999px; /* 隐藏a标签中的文本 */ width: 30px; height: 30px; margin: 0px; } #star li.on { background-position: 0 0; } /* span { border: 1px solid yellow; } */ p { /*后面要根据鼠标变动,更改p,所以要设置定位*/ /* border: 1px solid blue; */ position: absolute; top: 20px; width: 200px; display: none; } p em { color: #f60; display: block; font-style: normal; } strong { color: #f60; padding-left: 20px; } </style> <script> /* "很不满意|差得太离谱,与卖家描述的严重不符,非常不满", "不满意|部分有破损,与卖家描述的不符,不满意", "一般|质量一般,没有卖家描述的那么好", "满意|质量不错,与卖家描述的基本一致,还是挺满意的", "非常满意|质量非常好,与卖家描述的完全一致,非常满意" */ var msg = [ "很不满意|差得太离谱,与卖家描述的严重不符,非常不满", "不满意|部分有破损,与卖家描述的不符,不满意", "一般|质量一般,没有卖家描述的那么好", "满意|质量不错,与卖家描述的基本一致,还是挺满意的", "非常满意|质量非常好,与卖家描述的完全一致,非常满意" ]; //获取元素 let ul = document.querySelector('ul'); let lisObj = document.querySelectorAll('li'); let span = ul.nextElementSibling; let p = document.querySelector('p'); let score = 0; // 循环设置事件 lisObj.forEach((li, key) => { // console.log(li,key); //鼠标移入事件 li.onmouseover = overFn.bind(li, key); //鼠标移出事件 li.onmouseout = outFn; //鼠标点击事件 li.onmousedown = downFn.bind(li, key); }) //鼠标移入事件--p显示移动,星星高亮 function overFn(k) { //p显示 //p.style.display = 'block'; //p的位置 p.style.left = this.offsetLeft + 'px'; heightLightStar(k + 1); let tmpMsg = msg[k].split('|'); p.innerHTML = `<strong>${tmpMsg[0]}</strong><br>${tmpMsg[1]}`; } //鼠标移出 function outFn() { p.style.display = 'none'; heightLightStar(); } //鼠标点击事件 function downFn(k) { //取消p的显示 p.style.display = 'none'; //将对应的评价转换为字符串 let tmpMsg = msg[k].split('|'); //将评价添加到页面 //span.innerHTML = '<strong>${tmpMsg[0]}</strong>${tmpMsg[1]}'; //记录评价的成绩 score = k + 1; console.log(score); //将点击的星星下标加1传递给高亮函数 heightLightStar(score); } //星星高亮 function heightLightStar(key) { let tmpKey = key || score; for (let i = 0; i < lisObj.length; i++) { lisObj[i].className = i < tmpKey ? 'on' : ''; } } </script>