广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >JS+cookie实现购物评价五星好评功能
  • 788
分享到

JS+cookie实现购物评价五星好评功能

2024-04-02 19:04:59 788人浏览 薄情痞子
摘要

本文实例为大家分享了js+cookie实现购物评价五星好评功能的具体代码,供大家参考,具体内容如下 案例实现的是购物评价中五星点评功能. 通过JS面向对象方法实现 利用cookie实

本文实例为大家分享了js+cookie实现购物评价五星好评功能的具体代码,供大家参考,具体内容如下

案例实现的是购物评价中五星点评功能.

通过JS面向对象方法实现

利用cookie实现历史点评保存的功能,在下一次打开页面仍保存上一次点评效果.

具体html,js代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script type="module">
    function getCookie(){
            return document.cookie.split(";").reduce((value,item,index)=>{
                var arr=item.split("=");
                var t=arr[1].trim();
                try{
                    t=JSON.parse(t);
                }catch(e){
                    t=t;
                }
                value[arr[0].trim()]=t;
                return value;
            },{})
    }
        if(document.cookie.length>0){
        var a=getCookie();
        var keys=Object.keys(a);
        console.log(a)
        console.log(keys)
        }
        var list=["用户体验","物流速度","物流服务","商家态度","商品包装"]
        import Starr from "./js/Starr.js";
        list.forEach((item,index)=>{
            let star= new Starr(item);
            star.appendTo("body");
            var index=keys.indexOf(item);
            if(index>-1){
                star.prv=a[item]-1;
                star.changeScore(a[item]-1);
                star.changestar(a[item]-1);
            }
        })
    </script>
</body>
</html>

JS代码部分:

import Component from './Component.js';
export default class Starr extends Component{
    labelCon;
    starCon;
    startArr=[];
    score;
    face;
    prv;
    index;
    static EVERYSCORE={};
    static STARTNUM=5;
    constructor(_label){
        super();
        this.label=_label;
        Object.assign(this.elem.style,{
            width: "auto",
            float: "left",
            height: "16px",
            paddingBottom: "10px",
            marginRight: "20px",
            paddingTop:"16px" 
        });
        Starr.EVERYSCORE[_label]=0;
        this.creatLabel(_label);
        this.creatStartCon();
        this.creatScore();
        this.starCon.addEventListener("mouseover",e=>this.mouseHandler(e));
        this.starCon.addEventListener("mouseleave",e=>this.mouseHandler(e));
        this.starCon.addEventListener("click",e=>this.mouseHandler(e));
        // this.elem.addEventListener("change",e=>this.changeHandler(e));
    }
    //创建label容器
    creatLabel(label){
        this.labelCon=document.createElement("span");
        Object.assign(this.labelCon.style,{
            float: "left",
            height: "16px",
            lineHeight: "16px",
            marginRight: "10px",
            overflow: "hidden",
            whiteSpace: "nowrap",
            textOverflow: "ellipsis",
            font: '12px/150% tahoma,arial,Microsoft YaHei,Hiragino Sans GB,"\u5b8b\u4f53",sans-serif',
            color: "#666"
        });
        this.labelCon.textContent=label;
        this.elem.appendChild(this.labelCon);
    }
    //创建星星和笑脸的容器 starCon
    creatStartCon(){
        this.starCon=document.createElement("div");
        Object.assign(this.starCon.style,{
            float:"left",
            height:"16px",
            position:"relative",
            marginTop:"1px"
        });
        for(var i=0;i<Starr.STARTNUM;i++){
            let star = document.createElement("div");
            Object.assign(star.style,{
                width:"16px",
                height:"16px",
                float:"left",
                backgroundImage:"url(./img/commstar.png)",
            });
            this.starCon.appendChild(star);
            this.startArr.push(star)
        }
        this.face=document.createElement("div");
        Object.assign(this.face.style,{
            width:"16px",
            height:"16px",
            backgroundImage:"url(./img/face-red.png)",
            position:"absolute",
            top:"-16px",
            display:"none"
        })
        this.starCon.appendChild(this.face)
        this.elem.appendChild(this.starCon);
    }
    //创建分数
    creatScore(){
        this.score = document.createElement("span");
        Object.assign(this.score.style,{
            position: "relative",
            width: "30px",
            height: "16px",
            top:"-2px",
            marginLeft:"10px",
            lineHeight: "16px",
            textAlign: "right",
            color: "#999",
            font:'12px/150% tahoma,arial,Microsoft YaHei,Hiragino Sans GB,"\u5b8b\u4f53",sans-serif',
        });
        this.score.textContent="0分";
        this.elem.appendChild(this.score);
    }
    //鼠标事件
    mouseHandler(e){
        //进入时
        if(e.type==="mouseover"){
            this.face.style.display="block";
            let index=this.startArr.indexOf(e.target);
            if(index<0)return;
            this.changeFace(index);
            this.changeScore(index);
            if(this.prv>index){
                this.changestar(this.prv);
            }else{
                this.changestar(index);
            }
            //离开时
        }else if(e.type==="mouseleave"){
            this.face.style.display="none";
            if(this.prv>=0){
                this.changestar(this.prv);
                this.changeScore(this.prv);
                this.changeFace(this.prv);
            }else{
                this.changestar(-1);
                this.changeScore(-1);
                this.changeFace(0);
            }
            //点击时
        }else if(e.type==="click"){
            let index=this.startArr.indexOf(e.target);
            this.prv=index;
            this.changestar(this.prv);
            this.changeScore(this.prv);
            this.changeFace(this.prv);
            this.getCookie(this.prv+1);
            Starr.EVERYSCORE[this.label]=index+1;
        }
    }
    //改变星星颜色方法
    changestar(index){
        for(var i=0;i<this.startArr.length;i++){
            if(i<=index)this.startArr[i].style.backgroundPositionY="-16px";
            else this.startArr[i].style.backgroundPositionY="0px";
        }
    }
    //分数改变方法
    changeScore(index){
        this.index=index;
        this.score.textContent=index+1+"分";
        if(index+1===0){
            this.score.style.color="#999";
        }else{   //否则有分数,文字为红色
            this.score.style.color="#e4393c";
        }
    }
    //笑脸变化
    changeFace(index){
        this.face.style.left=index*16+"px";
        this.face.style.backgroundPositionX=-(4-index)*20+"px";
    }
    //设置cookie
    getCookie(index){
        var date = new Date();
        date.setFullYear(2021);
        if(!index)index=0;
        document.cookie=this.label+"="+index+";expires="+date.toDateString();
    }
}

最终实现效果: 下次打开仍会显示该点评效果

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: JS+cookie实现购物评价五星好评功能

本文链接: https://www.lsjlt.com/news/166576.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • JS+cookie实现购物评价五星好评功能
    本文实例为大家分享了JS+cookie实现购物评价五星好评功能的具体代码,供大家参考,具体内容如下 案例实现的是购物评价中五星点评功能. 通过JS面向对象方法实现 利用cookie实...
    99+
    2022-11-13
  • 如何使用js实现五星评价功能
    这篇文章主要介绍如何使用js实现五星评价功能,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!效果图:代码如下:<!DOCTYPE html> <html&n...
    99+
    2022-10-19
  • JS实现五星好评效果
    用JS实现面向对象方法实现京东的五星好评效果。 鼠标滑过时的显示: 当评价完成后,关闭浏览器重新打开页面,还是上次的评价结果。用cookie实现。 具体实现如下: impor...
    99+
    2022-11-12
  • JS实现五星好评案例
    本文实例为大家分享了JS实现五星好评案例的具体代码,供大家参考,具体内容如下 业务逻辑是我需要先创建出所有我需要用到的标签和样式再写出我们星星对应的行为,分数对应行为,笑脸对应行为,...
    99+
    2022-11-12
  • JS实现服务五星好评
    本文实例为大家分享了JS实现服务五星好评的具体代码,供大家参考,具体内容如下 html部分 <!DOCTYPE html> <html lang="en">...
    99+
    2022-11-13
  • react如何实现五星评价功能
    这篇文章主要介绍了react如何实现五星评价功能的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇react如何实现五星评价功能文章都会有所收获,下面我们一起来看看吧。react实现五星评价的方法:1、设置五个元素...
    99+
    2023-07-04
  • 微信小程序实现五星评价功能
    本文实例为大家分享了微信小程序实现五星评价的具体代码,供大家参考,具体内容如下 需求如图: 1个星-很不满意; 2个星-不满意; 3个星-一般; 4个星-还不错; 5个星-很满意...
    99+
    2022-11-13
  • 微信小程序如何实现五星评价功能
    小编给大家分享一下微信小程序如何实现五星评价功能,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!微信小程序 五星评价功能效果图:要...
    99+
    2022-10-19
  • JS与JQuery分别实现淘宝五星好评特效
    本文实例为大家分享了JS与JQuery实现淘宝五星好评特效的具体代码,供大家参考,具体内容如下 我们经常用的五星好评是如何来的,主要就是三个Event 中的三个事件分别: onmou...
    99+
    2022-11-13
  • 微信小程序怎么实现五星评分功能
    这篇文章主要介绍了微信小程序怎么实现五星评分功能,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。五星级评分效果:<view> &n...
    99+
    2022-10-19
  • 原生js+cookie如何实现购物车功能
    这篇文章主要介绍原生js+cookie如何实现购物车功能,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!具体如下:这里使用js+cookie实现简单的购物车功能。首先是简单的HTML结...
    99+
    2022-10-19
  • js实现购物车加减以及价格计算功能
    本文实例为大家分享了js实现购物车加减以及价格计算的具体代码,供大家参考,具体内容如下 需求说明: 1、单击“半闭”按钮时,关闭当前页面购物车页面 2、单击“移入收藏”弹出收藏提示 ...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作