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

Tiefes Verständnis der JavaScript-Syntax und Codestruktur

Inhaltsverzeichnis Überblick Funktionalität und L...

Lösung zur Installation von OpenCV 3.2.0 in Ubuntu 18.04

Laden Sie opencv.zip herunter Installieren Sie di...

Detaillierte Schritte zum Herunterladen und Installieren von Tomcat unter Linux

Wenn Sie gerade erst mit Linux in Berührung gekom...

Lösung zum Anwenden von CSS3-Transformationen auf Hintergrundbilder

CSS-Transformationen sind zwar cool, wurden aber ...

Auswahl der MySQL-Tabellentyp-Speicher-Engine

Inhaltsverzeichnis 1. Zeigen Sie die Speicher-Eng...

Grafisches Tutorial zur Installation und Konfiguration von MySQL 8.0.18 (Linux)

Dieser Artikel zeichnet das grafische Tutorial zu...

Interpretation der Vue-Komponentenregistrierungsmethode

Inhaltsverzeichnis Überblick 1. Globale Registrie...

So lösen Sie das domänenübergreifende Front-End-Problem mithilfe des Nginx-Proxys

Vorwort Nginx (ausgesprochen „Engine X“) ist ein ...

Löschen von Dateien mit Leerzeichen in Linux (keine Verzeichnisse)

In unserer täglichen Arbeit kommen wir oft mit Da...

Zentrieren des Formulars in HTML

Ich bin einmal auf eine Aufgabe gestoßen, bei der...