当前位置:首页>>问题

js 点击星星打分代码

<divid="star"><span>点击星星就能打分</span><ul><li><ahref="javascript:;">1</a></li><li><ahref="javascript:;">2</a></li><li><ahref="javascript:

admin

微信截图_20240322080428.png

<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>



返回顶部