JS erzielt Fünf-Sterne-Lobeffekt

JS erzielt Fünf-Sterne-Lobeffekt

Verwenden Sie JS, um objektorientierte Methoden zu implementieren und den Fünf-Sterne-Bewertungseffekt von JD.com zu erzielen.

Anzeige beim Überfahren mit der Maus:

Wenn die Auswertung abgeschlossen ist, schließen Sie den Browser und öffnen Sie die Seite erneut. Das letzte Auswertungsergebnis wird weiterhin angezeigt. Dies geschieht durch die Verwendung von Cookies.

Die konkrete Umsetzung sieht wie folgt aus:

importiere Componentet aus "./Component.js";
 
exportiere Standardklasse Stars erweitert Component {
 
    Etikett;
    STERNE_ANZAHL = 5;
    SternArr = [];
    Punktzahl = 0;
    SterneCon;
    Gesichtssymbol;
    PunktzahlCon;
    Index = -1;
    Name;
    
    static STARS_LIST={}; //Alle Fünf-Sterne-Bewertungsergebnisse auf der aktuellen Seite speichern, ein Produkt pro Gruppe. Verwenden Sie die Produkt-ID als Schlüssel und die Produktbewertungen, um ein Array als Wert zu bilden.
    Datum=neues Datum();
 
    Konstruktor(_label,_name) {
        super("div");
        dies.name=_name;
        dies.label = _label;
        Objekt.zuweisen(this.elem.style, {
            Breite: "200px",
            Höhe: "16px",
            float: "links",
            marginRight: "20px",
            Rand unten: "10px",
            Schriftgröße: "12px",
            Farbe: "#666",
            Zeilenhöhe: "16px",
            Benutzerauswahl: "keine",
            Position: "relativ",
            oben: "20px",
            links: "20px",
        })
        // Analysieren Sie die im Cookie gespeicherten Bewertungsergebnisse und initialisieren Sie den Bewertungswert beim Erstellen jeder Bewertung.
        dies.initScore();
        // Den Bewertungsbeschriftungsteil erstellen this.createLabel();
        // Den Teil mit den Sternen erstellen this.createStars();
        //Erstellen Sie den Punkteteil this.createScore();
        // Initialisieren Sie den Sternstil.
        dies.changeStarStyle(dieses.score-1);
        // Punktzahl initialisieren this.changeScore(this.score);
        //Maus-Rollover- und Klickereignisse hinzufügen.
        this.starsCon.addEventListener("mouseenter", e => this.mouseHandler(e));
        this.starsCon.addEventListener("mouseleave", e => this.mouseHandler(e));
        this.starsCon.addEventListener("mouseover", e => this.mouseHandler(e));
        this.starsCon.addEventListener("klicken", e => this.clickHandler(e));
        dieses.date.setFullYear(2021);
    }
    anhängenAn(_parent){
        super.appendTo(_parent);
        wenn(!Stars.STARS_LIST[dieser.name]) Stars.STARS_LIST[dieser.name]=[];
        Sterne.STARS_LIST[dieser.name].push(dieses.label+"="+dieser.score);
    }
    KlickHandler(e){
        wenn(e.target.constructor!==HTMLLIElement) return
        dies.index = dies.starArr.indexOf(e.target);
        dieser.Score = dieser.Index+1;
        dies.changeStarStyle(dieser.index);
        dies.changeScore(dieses.index+1);
        // Bei jedem Klick wird das Ergebnis des Kommentars im Cookie gespeichert, sodass es beim nächsten Öffnen der Seite gelesen werden kann. STARS_LIST speichert Daten mit Label als Schlüssel und Score als Wert.
        dies.storageScore();
    }
    Speicherscore(){
        für (let-Eigenschaft in Stars.STARS_LIST) {
            wenn(prop === dieser.name){
                Sterne.STARS_LIST[prop].forEach((item,index)=>{
                    wenn (item.includes(this.label)) Sterne.STARS_LIST[prop][index] = this.label+"="+this.score;
                });
            }
        }
        document.cookie="comment="+ JSON.stringify(Stars.STARS_LIST)+";expires="+this.date.toUTCString();
    }
    MausHandler(e) {
        Schalter (e.Typ) {
            Fall "mouseenter":
                this.faceIcon.style.display = "Block";
                brechen;
            Fall "Mausblatt":
                this.faceIcon.style.display = "keine";
                dies.changeStarStyle(dieser.index);
                dies.changeScore(dieses.score);
                brechen;
            Fall „Mouseover“:
                let index = this.starArr.indexOf(e.target);
                dies.changeStarStyle(index);
                dies.changeScore(index + 1);
                dies.changeFaceStyle(index);
                brechen;
        }
    }
    ändereSternstil(_i) {
        für (lass n = 0; n < this.starArr.length; n++) {
            wenn (n <= _i || n < dieser.Score) {
                this.starArr[n].style.backgroundPositionY = "-16px";
            } anders {
                this.starArr[n].style.backgroundPositionY = "0px";
            }
        }
    }
    ändereGesichtsstil(_i) {
        dieses.faceIcon.style.left = _i * 16 + "px";
        this.faceIcon.style.backgroundPositionX = (_i + 1) * 20 + "px";
    }
    änderePunktzahl(_i) {
        this.scoreCon.textContent = _i + "Punkte";
    }
    Label erstellen() {
        let label = document.createElement("span");
        Objekt.zuweisen(Beschriftung.Stil, {
            float: "links",
            Polsterung: "0 5px",
        })
        label.textinhalt = dieses.label;
        dies.elem.appendChild(Bezeichnung);
    }
    erstelleSterne() {
        this.starsCon = document.createElement("ul");
        Objekt.assign(this.starsCon.style, {
            Rand: 0,
            Polsterung: 0,
            Listenstil: "keine",
            Breite: "80px",
            Höhe: "16px",
            float: "links",
            Position: "relativ",
        })
        für (lass i = 0; i < this.STARS_NUM; i++) {
            let li = document.createElement("li");
            Objekt.assign(li.style, {
                Breite: "16px",
                Höhe: "16px",
                float: "links",
                Hintergrundbild: "url(./star_img/commstar.png)",
            })
            dies.starArr.push(li);
            dies.starsCon.appendChild(li);
        }
        dies.faceIcon = document.createElement("div");
        Objekt.zuweisen(this.faceIcon.style, {
            Breite: "16px",
            Höhe: "16px",
            Hintergrundbild: "url(./star_img/face-red.png)",
            HintergrundPositionX: "-80px",
            Position: "absolut",
            links: "0",
            oben: "-16px",
            Anzeige: "keine",
        })
        dies.starsCon.appendChild(dieses.faceIcon);
        dies.elem.appendChild(dies.starsCon);
    }
    erstelleScore() {
        dies.scoreCon = document.createElement("div");
        Objekt.zuweisen(this.scoreCon.style, {
            Höhe: "16px",
            Breite: "20px",
            float: "links",
            Polsterung: "0 5px",
        })
        this.scoreCon.textContent = this.score + "Text",
        dies.elem.appendChild(dies.scoreCon);
    }
    initScore(){
        // Lesen Sie das Cookie direkt, um es wie folgt anzuzeigen // Kommentar = {"1001": ["Produktkonformität = 5","Shop-Service-Einstellung = 0","Express-Liefergeschwindigkeit = 0","Kurierdienst = 0","Express-Verpackung = 0"],"1002": ["Produktkonformität = 0","Shop-Service-Einstellung = 0","Express-Liefergeschwindigkeit = 0","Kurierdienst = 0","Express-Verpackung = 0"]}
 
        // Analysieren Sie die im Cookie gespeicherten Kommentarergebnisse.
        wenn(!document.cookie.includes("comment=")) return
        lass o = JSON.parse(document.cookie.match(/(\{.*?\})/)[1]);
        wenn(!o) zurückgeben
        // Das analysierte o lautet wie folgt // ["Produktkonformität=1", "Shop-Service-Einstellung=0", "Express-Liefergeschwindigkeit=0", "Kurierdienst=0", "Express-Verpackung=0"]
        für (let prop in o) {
            wenn(dieser.name===prop){
                this.score=o[prop].reduce((Wert,Element,Index)=>{
                    lass arr = item.split("=");
                    wenn(arr[0].includes(this.label)) Wert=parseInt(arr[1]);
                    Rückgabewert;
                },0)
            }
        }
    }
}

Übergeben Sie bei Verwendung das Tag und erstellen Sie eine neue Instanz.

importiere Sterne aus „./js/Stars.js“;
let list=["Produktkonformität","Serviceeinstellung des Ladenbesitzers","Express-Liefergeschwindigkeit","Kurierdienst","Express-Verpackung"];
 
        // lass Stern = neue Sterne(Liste[0]);
        // Stern.appendTo("body");
 
        Liste.fürJeden(Element=>{
            // Geben Sie das Label und die entsprechende Produkt-ID ein
            let star = neue Sterne(Artikel,"1001");
            Stern.appendTo(".div1");
        })
        Liste.fürJeden(Element=>{
            let star = neue Sterne(Artikel,"1002");
            Stern.appendTo(".div2");
        })

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • JS erhält Fünf-Sterne-Lob
  • JavaScript implementiert Fünf-Sterne-Produktbewertung
  • Implementieren Sie Fünf-Sterne-Bewertungen auf Basis von jQuery
  • Fünf-Sterne-Bewertungsfunktion implementiert durch jQuery [Fall]
  • jQuery-Methode zum Imitieren der Fünf-Sterne-Bewertungsfunktion basierend auf Ebenen
  • js realisiert die Fünf-Sterne-Bewertungsfunktion
  • JavaScript zur Realisierung der Fünf-Sterne-Bewertungsfunktion
  • JavaScript zur Implementierung des Fünf-Sterne-Bewertungscodes (Quellcode-Download)
  • JS und JQuery realisieren jeweils Taobao Fünf-Sterne-Lob-Spezialeffekte

<<:  Erläuterung der MySQL-Indexoptimierung

>>:  Eine kurze Analyse der Verwendung der Zero-Copy-Technologie in Linux

Artikel empfehlen

Zusammenfassung der Erfahrungen mit der Web-Frontend-Entwicklung

XML-Dateien sollten so weit wie möglich in UTF-8 ...

Detaillierte Erklärung des Unterschieds zwischen CSS-Link und @import

Wie fügt man CSS in HTML ein? Es gibt drei Möglic...

Ähnlich wie HTML-Tags: strong und em, q, cite, blockquote

Es gibt einige Tags in XHTML, die ähnliche Funkti...

Zusammenfassung der englischen Namen chinesischer Schriftarten

Wenn Sie in CSS die Eigenschaft „font-family“ ver...

Grafisches Tutorial zur Installation von CentOS7 auf VMware 15.5

1. Erstellen Sie eine neue virtuelle Maschine in ...

So erstellen Sie ein Tomcat-Image basierend auf Dockerfile

Dockerfile ist eine Datei, die zum Erstellen eine...

Detaillierte Erklärung der Rolle und des Prinzips des Schlüssels in Vue

Inhaltsverzeichnis 1. Beginnen wir mit dem Fazit ...

So installieren Sie OpenSSH aus dem Quellcode in CentOS 7

Umgebung: Mindestinstallation von CentOS 7.1.1503...

Implementierungscode für die nahtlose Verbindung des Div-Bildlaufbands

Code kopieren Der Code lautet wie folgt: <html...

VSCode-Entwicklung UNI-APP Konfigurations-Tutorial und Plugin

Inhaltsverzeichnis Vorne geschrieben Vorsichtsmaß...

Vue realisiert die Bildschirmanpassung von Großbildschirmseiten

In diesem Artikel wird der spezifische Code von V...