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

Erstellen, Einschränkungen und Löschen von Fremdschlüsseln in MySQL

Vorwort Ab MySQL-Version 3.23.44 unterstützen Inn...

Detaillierte Erklärung des MySQL-Triggerbeispiels

Inhaltsverzeichnis Was ist ein Auslöser Erstellen...

Angular Dependency Injection erklärt

Inhaltsverzeichnis Überblick 1. Abhängigkeitsinje...

So stellen Sie Oracle mit Docker auf dem Mac bereit

So stellen Sie Oracle mit Docker auf dem Mac bere...

MySQL-Partitionierungspraxis mit Navicat

MySQL-Partitionierung ist hilfreich bei der Verwa...

Das rel-Attribut des HTML-Link-Tags

Das <link>-Tag definiert die Beziehung zwis...

Schritte der MySQL-Methode zum Bestimmen, ob es sich um eine Teilmenge handelt

Inhaltsverzeichnis 1. Problem 2. Lösung Option 1:...

Die vollständige Liste der MIME-Typen

Was ist ein MIME-TYP? 1. Zunächst müssen wir vers...

MySQL-Fall bei der Verwendungsbeispielanalyse

Zuerst erstellen wir die Datenbanktabelle: Tabell...

VUE implementiert Saugknopf an der Unterseite

In diesem Artikelbeispiel wird der spezifische Co...