js评分系统

一、构造函数写评分系统
效果:当鼠标滑过的时候星星会亮,并显示评语,当鼠标移出的时候,评语消失,星星不亮,当点击星星的时候,被点击的星星及它前面的星星都会显示
下面展示一些 内联代码片

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <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/star.png') no-repeat;
            text-indent: -9999px;
            /* 隐藏a标签中的文本 */
            width: 24px;
            margin: 0px;

        }

        #star li.on {
            background-position: 0 -28px;
        }

        /* 
        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>
</head>
<body>
    <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>
        <script>
            function setScore(){
                this.msg = [
                "很不满意|差得太离谱,与卖家描述的严重不符,非常不满",
                "不满意|部分有破损,与卖家描述的不符,不满意",
                "一般|质量一般,没有卖家描述的那么好",
                "满意|质量不错,与卖家描述的基本一致,还是挺满意的",
                "非常满意|质量非常好,与卖家描述的完全一致,非常满意"
            ];
            //获取节点
            this.ul = document.querySelector('ul');
            this.liObj = document.querySelectorAll('ul>li');
            this.pObj = document.querySelector('p');
            this.spanObj = this.ul.nextElementSibling;
            //设置基础数据
             //保存滑过数目的数据
             this.score = 0;
             //定义一个函数,函数里面包括给li绑定的时间
             this.loopBind();
            // 
            }
            //创建loopBinder函数,将函数添加到原型对象中
            setScore.prototype.loopBind = function(){
                // console.log(this);
                //给li绑定鼠标滑过事件
                //循环遍历li里的元素,给每个li绑定事键
                this.liObj.forEach((li,key)=>{
                    li.onmouseover = this.overFn.bind(this,key);
                    li.onmouseout = this.outFn.bind(this,key);
                    li.onclick = this.clickFn.bind(this,key);
                })   
            }
           //创建鼠标滑过函数
           setScore.prototype.overFn = function(k){
            // console.log(this);这时指向setScore函数
            // this.pObj.style.display = 'block'
            //获取当前事件源li,
            let tar = event.target;
            // console.log(tar);
            this.pObj.style.display = 'block';
            //当鼠标移动的时候让li跟随鼠标移动
            this.pObj.style.left =tar.offsetLeft-25+'px';
            //把文字写入p标签
            let temMsg = this.msg[k].split('|');
            // console.log(temMsg);
            //把文字写入p标签里
            this.pObj.innerHTML = `<strong>${temMsg[0]}</strong></br>${temMsg[1]}`; 
            //并让保存的记录数加1
            //当p滑过的时候让星星亮
            this.starShow(k+1);
            // console.log(k);
           }
           //给鼠标创建一个点击函数,当点击的时候可以显示评价
           setScore.prototype.clickFn = function(k){
           //当点击的时候让p消失
           this.pObj.style.display = 'none';
          //点击的时候让span出现
          let temMsg = this.msg[k].split('|');
          this.spanObj.innerHTML = `<strong>${temMsg[0]}</strong>${temMsg[1]}`; 
          //给记录数重新赋值
          this.score = k+1;

           }
           //创建一个鼠标移出的时间,当鼠标移出的时候让p消失,星星不良
           setScore.prototype.outFn= function(k){
            this.pObj.style.display = 'none';
            //调用让星星亮的函数
            this.starShow();
           }
           //创建让星星亮的函数
           setScore.prototype.starShow = function(k){
            // console.log(k);
            //设置一个数据用来保存key和score的值
            let tem = k || this.score;
            // 循环控制li的状态
            for(let i= 0;i<this.liObj.length;i++){
                this.liObj[i].className = tem>i?'on':'';
            }   
           }
            new setScore();
        </script>
    </div>
</body>
</html>

效果展示:
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可视化电影评分系统是一个能够通过图表和地图展示电影评分情况的系统。在这个系统中,我们可以使用Echarts来实现图表的展示,使用MapReduce来进行数据处理,以及使用JavaWeb来搭建整个系统。 Echarts是一个基于JavaScript的图表库,具有丰富的图表展示功能。我们可以使用Echarts来展示电影评分的各项指标,比如评分分布情况、评分趋势、不同地区电影评分对比等等。通过图表的形式,用户可以直观地了解电影评分情况,帮助他们做出更准确的选择。 MapReduce是一种用于大规模数据处理的编程模型,通过将大数据分成多个部分,分别在不同的计算节点上进行处理,最后将结果合并,可以大大加快数据处理的速度。在可视化电影评分系统中,我们可以使用MapReduce来处理大规模的电影评分数据,比如计算每个电影的平均评分、电影类型的热度等等。 JavaWeb是一种用Java语言开发Web应用的技术。通过JavaWeb,我们可以搭建一个用户友好的前端界面,包括登录注册、电影搜索、电影评分等功能。用户可以通过JavaWeb与后台的数据库进行交互,浏览电影信息并进行评分。同时,JavaWeb还可以将Echarts和MapReduce处理的数据整合,生成图表和地图展示给用户。 综上所述,可视化电影评分系统可以通过Echarts实现图表展示,通过MapReduce进行数据处理,通过JavaWeb搭建整个系统前端界面和后端交互。这样的系统可以为用户提供直观的电影评分信息,帮助他们做出更明智的电影选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值