Füllen Sie die Suchfunktion auf der HTML-Seite aus

Füllen Sie die Suchfunktion auf der HTML-Seite aus

Ich habe kürzlich an einem Framework gearbeitet, das von vielen Leuten modifiziert wurde. Mir wird schwindelig, wenn ich mir den Code jeden Tag anschaue, aber ich habe das Gefühl, dass ich große Fortschritte gemacht habe. Ich habe ein Backend erstellt, mit dem das Frontend so konfiguriert werden kann, dass unterschiedliche Datenbereiche von zwei Bibliotheken angezeigt werden. Ich bin ziemlich zufrieden damit und habe es neulich geteilt. Heute werde ich über eine Funktion sprechen, die ich in den letzten Tagen erstellt habe, nämlich die Suchfunktion für HTML-Seiten.

Diese Funktion dient hauptsächlich dazu, Zeichen in das Suchfeld einzugeben und dann hinten auf die Schaltfläche „Zurück“ oder „Weiter“ zu drücken. Die übereinstimmenden Zeichen im Suchbereich werden automatisch mit einem speziellen Stil markiert. Sie können dann weiterhin auf die Schaltfläche „Zurück“ oder „Weiter“ drücken, um die übereinstimmenden Zeichen der Reihe nach zu durchsuchen, und einen anderen Stil verwenden, um die aktuell übereinstimmenden Zeichen von anderen übereinstimmenden Zeichen zu unterscheiden.

Die Frontend-Anzeige sieht folgendermaßen aus:

Das HTML sieht folgendermaßen aus:

 <div Klasse="Container" Stil="z-index: 999" id="searchDiv">
        <div Klasse="Schlüsselwortsuche">
            Suchen nach:
            <input id="key" type="text" style="width: 200px;" placeholder="Schlüsselwort" />
            <a href="javascript:void(0);" Klasse="prev" onclick='wordSearch(1)'><i class="c-icon"></i></a>
            <a href="javascript:void(0);" Klasse="nächstes" onclick='wordSearch()'><i class="c-icon"></i></a>
        </div>
    </div>

Skriptcode:

  <script>//Suchfunktion var oldKey0 = "";
        var index0 = -1;var alterAnzahl0 = 0;
        var neue Flagge = 0;
        var aktuelleLänge = 0;
        Funktion WortSuche(flg) {
            var key = $("#key").val(); //Schlüsselwert abrufenif (!key) {
                return; //Beenden, wenn der Schlüssel leer ist}
            getArray();
            FokusWeiter(flg);
        }
        Funktion FokusWeiter(Flag) {
            if (newflag == 0) {//Bei neuer Suche wird der Index gelöscht index0 = 0;
            }
            wenn (!flg) {
                if (oldCount0 != 0) {//Wenn noch gesucht wird if (index0 < oldCount0) {//Wenn die linke Seite nicht fertig ist, gehe nach links focusMove(index0);
                        Index0++;
                    } sonst wenn (index0 == oldCount0) {//Alles erledigt index0 = 0;
                        FokusBewegung(index0);
                        Index0++;
                    }
                    anders {
                        index0 = 0; //Nicht bestätigt focusMove(index0);
                        Index0++;
                    }
                }
            } anders {
                if (oldCount0 != 0) {//Wenn noch gesucht wird, if (index0 <= oldCount0 && index0 > 0) {//Wenn die linke Seite nicht fertig ist, gehe nach links index0--;
                        FokusBewegung(index0);
                    } sonst wenn (index0 == 0) {//Alles erledigt index0 = oldCount0;
                        index0--
                        FokusBewegung(index0);
                    }
                }
            }
        }
        Funktion getArray() {
            neue Flagge = 1;
            $(".contrast .result").removeClass("res");
            var key = $("#key").val(); //Schlüsselwert abrufenif (!key) {
                alterSchlüssel0 = "";
                return; //Beenden, wenn der Schlüssel leer ist}
            wenn (alterSchlüssel0 != Schlüssel || $(".aktuell").Länge != aktuelleLänge) {
                //Zurücksetzen index0 = 0;
                Var-Index = 0;
                $(".kontrast .result").jeweils(funktion () {
                    $(diese).ersetzenMit($(diese).html());
                });
                pos0 = neues Array();
                wenn ($(".contrast-wrap").hasClass("current")) {
                    aktuelleLänge = $(".aktuell").Länge;
                    $(".aktueller .Kontrast").jeweils(Funktion () {
                        $(this).html($(this).html().replace(new RegExp(key, "gm"), "<span id='result" + (index++) + "' class='result'>" + key + "</span>")); // ersetzen });
                } anders {
                    $(".contrast-wrap").addClass('aktuell');
                    aktuelleLänge = $(".aktuell").Länge;
                    $(".Kontrast").jeweils(Funktion () {
                        $(this).html($(this).html().replace(new RegExp(key, "gm"), "<span id='result" + (index++) + "' class='result'>" + key + "</span>")); // ersetzen });
                }
                //$("#Schlüssel").val(Schlüssel);
                oldKey0 = Schlüssel;
                //$(".kontrast.ergebnis").jeweils(funktion () {
                // $(diese).parents('.contrast-wrap').addClass('aktuell');
                // pos0.push($(this).offset().top);
                //});
                // pos0.push($(".contrast .result:eq(2)").offset().top - $(".contrast .result:eq(2)").parents(".contrast").offset().top);
                alterAnzahl0 = $(".contrast .result").Länge;
                neue Flagge = 0;
            }
        }
        Funktion FokusMove(index0) {
            $(".contrast .result:eq(" + index0 + ")").parents('.contrast-wrap').addClass('current');
            $(".contrast .result:eq(" + index0 + ")").addClass("res");
            var top = $(".contrast .result:eq(" + index0 + ")").offset().top + $(".contrast .result:eq(" + index0 + ")").parents(".contrast").scrollTop();
            var intop = top - $(".contrast .result:eq(" + index0 + ")").parents(".contrast").offset().top;
            $(".contrast .result:eq(" + index0 + ")").parents(".contrast").animate({ scrollTop: intop }, 200);
            wenn ($(".contrast .result:eq(" + index0 + ")").parents(".contrast").scrollTop() == 0) {
                $("html, body").animate({ scrollTop: top - 200 }, 200);
            } anders {
                $("html, body").animieren({ scrollTop: $(".contrast .result:eq(" + index0 + ")").parents(".contrast").offset().top - 200 }, 200);
            }
        }
        $('#Schlüssel').ändern(Funktion () {
            wenn ($('#key').val() == "") {
                index0 = 0;
                $(".kontrast .result").jeweils(funktion () {
                    $(diese).ersetzenMit($(diese).html());
                });
                alterSchlüssel0 = "";
            }
        });
    </Skript>

Als nächstes erinnern wir uns an das Implementierungsprinzip:

Löschen Sie zuerst die Ergebnisse der vorherigen Abfrage. Verwenden Sie dann je nach Schlüsselwert reguläre Ausdrücke, um allen übereinstimmenden Zeichen im Bereich spezielle Stile hinzuzufügen. Beispielsweise wird der Methode ein Span-Tag mit einem Klassennamen des Ergebnisses hinzugefügt. Die Variable odKey0 wird verwendet, um den Wert des Schlüssels aufzuzeichnen (vergleichen Sie beim nächsten Mal zuerst. Wenn sie gleich sind, bedeutet dies, dass Sie den nächsten oder vorherigen Inhalt sehen möchten und Sie müssen keine regulären Ausdrücke eingeben und abgleichen), oldCount0 zeichnet die Gesamtzahl der Abfragen auf und newflag wird auf 0 gesetzt (wenn es nicht die erste Abfrage ist, ist newflag 1).

Geben Sie dann die Methode getNext ein. flg gibt an, ob der Benutzer die vorherige oder nächste Schaltfläche gedrückt hat. Index0 wird verwendet, um aufzuzeichnen, welches übereinstimmende Zeichen derzeit angezeigt wird. Es wird mit oldCount0 verglichen, um zu bestimmen, ob es erhöht, verringert oder auf 0 gesetzt werden soll (wenn es größer als oldCount0 oder kleiner als 0 ist, beginnen Sie von vorne).

Mit der Methode focusMove wird die Seite auf das aktuelle Element positioniert.

Gelernte jQuery-Methoden:

eq()-Selektor: Der Selektor wählt das Element mit dem angegebenen Indexwert aus. Beispiel: $(".contrast .result:eq(1)") wählt das zweite Element mit dem Klassennamen „result“ im Element mit dem Klassennamen „contrast“ aus.

Methode „parents()“: alle übergeordneten Elemente eines Elements. $("p").parents('.contrast-wrap') , alle Elemente des p-Elements mit dem Klassennamen contrast-wrap.

replace()-Methode: Ersetzen Sie das ausgewählte Element durch den angegebenen HTML-Inhalt. Beachten Sie, dass auch die Elemente des ausgewählten Elements ersetzt werden.

offset()-Methode: Gibt den Offset (die Position) der übereinstimmenden Elemente relativ zum Dokument zurück oder legt ihn fest.

scrollTop()-Methode: Gibt die vertikale Position der Bildlaufleiste der übereinstimmenden Elemente zurück oder legt sie fest.

Zusammenfassen

Das Obige ist die Einführung des Herausgebers in die Suchfunktion in HTML-Seiten. Ich hoffe, es wird für alle hilfreich sein. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und ich werde Ihnen rechtzeitig antworten. Ich möchte auch allen für ihre Unterstützung der Website 123WORDPRESS.COM danken!

<<:  Detaillierte Schritte zur Installation eines Hadoop-Clusters unter Linux

>>:  MySQL verwendet die Partitionsfunktion, um eine horizontale Partitionierungsstrategie zu implementieren

Artikel empfehlen

Üben Sie die Verwendung von Golang, um mit der Docker-API zu spielen

Inhaltsverzeichnis Installieren des SDK Lokalen D...

So ändern Sie die Container-Portzuordnung in Docker dynamisch

Vorwort: Die Docker-Portzuordnung erfolgt häufig,...

Eine kurze Diskussion zur Logikextraktion und Feldanzeige von Vue3 in Projekten

Inhaltsverzeichnis Logische Schichtung Trennen Si...

Docker-Container greift auf MySQL-Operationen des Hosts zu

Hintergrund: Es gibt ein Flask-Projekt, das eine ...

Ausführliche Erläuterung des Prinzips des MySQL Innodb-Index

Einführung Wenn ich zurückblicke, sagte der Lehre...

Detailliertes Tutorial zur Verwendung von stimulsoft.reports.js mit vue-cli

vue-cli verwendet stimulsoft.reports.js (Tutorial...

Ubuntu 16.04 mysql5.7.17 öffnet Remote-Port 3306

Aktivieren Sie den Remotezugriff auf MySQL MySQL-...

Analyse der vier Transaktionsisolationsstufen in MySQL anhand von Beispielen

Vorwort Um bei Datenbankoperationen die Richtigke...

Detaillierte Erläuterung des Falls des JavaScript-Upload-Dateilimitparameters

Projektszenario: 1. Einschränkungen beim Hochlade...

Tipps zur Kurzschrift in JavaScript

Inhaltsverzeichnis 1. Arrays zusammenführen 2. Ar...

Diagramm zur Installation von VMware 14 unter Windows 10

Software-Download Link zum Herunterladen der Soft...

Detaillierte Erläuterung der MySQL-Transaktionsisolationsebene und des MVCC

Inhaltsverzeichnis Transaktionsisolationsebene Be...