请大佬指点,我不是很理解这个星星评分是怎么选中当前和前面的星星的,还有点击了星星移出如何保持点击状态不被移出状态清除。
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script type="text/JavaScript" src="http://m.968ch.com/UserStyle/lxj/foodback/style/jquery-2.1.4.js"></script>
<title>百度文库评分</title>
<style>
html,
body,
p {
margin: 0;
padding: 0;
}
p {
border: 1px solid #eee;
width: 400px;
margin: 50px auto;
text-align: center;
padding: 10px 0;
}
#comment {
color: gray;
margin-left: 7px;
}
#rating {
font-size: 0;
}
#rating a {
margin: 0 1px;
}
</style>
<script>
window.onload = function () {
var oRating = document.getElementById('rating');
var aA = oRating.getElementsByTagName('a');
var oComment = document.getElementById('comment');
var arrImg = ['http://fantaghiro.github.io/miaov/JS_Basic_Lessons/7-img/nst.gif', 'http://fantaghiro.github.io/miaov/JS_Basic_Lessons/7-img/nsg.gif', 'http://fantaghiro.github.io/miaov/JS_Basic_Lessons/7-img/sth.gif', 'http://fantaghiro.github.io/miaov/JS_Basic_Lessons/7-img/st.gif'];
var lastArrImg = [];
var lastComment = ' ';
var num = 0;
//switch判断
function rating(index, imgSrc) {
// 移入当前a包括前面的一起选中
for (var i = 0; i <= index; i++) {
aA[i].getElementsByTagName('img')[0].src = imgSrc; //每个i的第一个img
}
switch (index) { //表达式index(通常是一个变量)的值会与结构中的每个 case 的值做比较
case 0:
oComment.innerHTML = '极差';
break; //使用 break 来阻止代码自动地向下一个 case 运行
case 1:
oComment.innerHTML = '很差';
break;
case 2:
oComment.innerHTML = '还行';
break;
case 3:
oComment.innerHTML = '不错';
break;
case 4:
oComment.innerHTML = '推荐';
}
}
for (var i = 0; i < aA.length; i++) {
aA[i].index = i;
// 鼠标移入
aA[i].onmouseover = function () {
num = this.index;
for (var i = 0; i < aA.length; i++) {
lastArrImg[i] = aA[i].getElementsByTagName('img')[0].src;
}
// 初始化
rating(aA.length - 1, arrImg[0]);
// 判断num小于2显示图片1,否则显示图片2
if (num < 2) {
rating(num, arrImg[1]);
} else {
rating(num, arrImg[2]);
}
}
// 鼠标移出
aA[i].onmouseout = function () {
for (var i = 0; i < aA.length; i++) {
aA[i].getElementsByTagName('img')[0].src = lastArrImg[i];
}
oComment.innerHTML = lastComment;
}
// 点击
aA[i].onclick = function () {
num = this.index;
// 初始化
rating(aA.length - 1, arrImg[0]);
// 判断num小于2显示图片1,否则显示图片3
if (num < 2) {
rating(num, arrImg[1]);
} else {
rating(num, arrImg[3]);
}
for (var i = 0; i < aA.length; i++) {
lastArrImg[i] = aA[i].getElementsByTagName('img')[0].src;
}
lastComment = oComment.innerHTML;
}
}
}
</script>
</head>
<body>
<p>
我的评价:
<span id="rating">
<a href="javascript:"><img src="img/st.gif" alt=""></a>
<a href="javascript:"><img src="img/st.gif" alt=""></a>
<a href="javascript:"><img src="img/st.gif" alt=""></a>
<a href="javascript:"><img src="img/st.gif" alt=""></a>
<a href="javascript:"><img src="img/st.gif" alt=""></a>
</span>
<span id="comment">推荐</span>
</p>
</body>
</html>
问题出现的环境背景及自己尝试过哪些方法
相关代码
// 请把代码文本粘贴到下方(请勿用图片代替代码)
这里鼠标移入的时候获取了移入的元素下标num = this.index;
然后执行
让前面的星星选中
后面点击了后。
执行lastArrImg[i] = aA[i].getElementsByTagName('img')[0].src;把img的src写入了代码里
所以点击完移除出不会发生改变