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

Detaillierte Erklärung zur Verwendung des CSS-Zeigerereignisse-Attributs

Bei der Frontend-Entwicklung stehen wir in direkt...

Detaillierte Erläuterung der Hosts-Dateikonfiguration auf einem Linux-Server

Konfiguration der Hostdatei des Linux-Servers Die...

MySQL-Fehler 1290 (HY000) Lösung

Ich habe lange mit einem Problem gekämpft und das...

Wie man die Idee von Vue nutzt, um einen Speicher zu kapseln

Inhaltsverzeichnis Hintergrund Funktion Zweck Ide...

HTML-Grundlagen-Zusammenfassungsempfehlung (Textformat)

HTML-Tags zur Textformatierung 標簽 描述 <b> 定義...

Detaillierte Erklärung der CSS-Textdekoration Textdekoration & Texthervorhebung

In CSS ist Text eines der häufigsten Dinge, mit d...

CSS3 Milchglaseffekt

Wenn der Milchglaseffekt gut gelingt, kann er die...

CSS realisiert die Layoutmethode „Fest links“ und „Adaptiv rechts“

1. Schwebendes Layout 1. Lassen Sie zuerst das Di...

Tipps zur Verwendung von Frameset zum Zentrieren des Breitbilds

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

So richten Sie die passwortfreie SSH-Anmeldung beim Linux-Server ein

Bei jeder Anmeldung am Testserver ist grundsätzli...