Ved Sharlene Khan

Det er nemmere at bygge din egen autofuldførelsessøgelinje, end du tror.

Læsere som dig hjælper med at støtte MUO. Når du foretager et køb ved hjælp af links på vores websted, kan vi optjene en affiliate-kommission. Læs mere.

En søgelinje er et populært UI-element, som mange moderne websteder bruger. Hvis du bygger et websted, der indeholder enhver form for data, vil du måske have, at dine brugere skal kunne søge efter specifikke elementer.

Der er mange måder, du kan bygge en søgelinje på. Du kan oprette komplekse søgelinjer, der returnerer resultater baseret på flere filtre, såsom et navn eller en dato. Eksisterende biblioteker kan hjælpe dig med at implementere en søgelinje uden at bygge den fra bunden.

Du kan dog også oprette en simpel søgelinje ved hjælp af vanilla JavaScript, der sammenligner en brugers input med en liste over strenge.

Sådan tilføjes brugergrænsefladen til søgelinjen

Dit websted skal indeholde et inputfelt, så dine brugere kan indtaste den tekst, de vil søge efter. En måde at gøre dette på er at bruge et input-tag og style det, så det ligner en søgelinje.

instagram viewer

  1. Opret en mappe til at gemme dit websted. Inde i mappen skal du oprette en HTML-fil med navnet index.html.
  2. Udfyld din fil med den grundlæggende struktur i et HTML-dokument. Hvis du ikke er fortrolig med HTML, er der mange HTML-kodeeksempler du kan lære for at hjælpe dig med at komme op i fart.
    <!doctype html>
    <html lang="da-US">
    <hoved>
    <titel>Søgelinje</title>
    </head>
    <legeme>
    <div klasse="beholder">
    <!-- Websideindhold kommer her-->
    </div>
    </body>
    </html>
  3. Tilføj et input-tag inde i containerklassen div. Dette vil give brugeren mulighed for at indtaste den tekst, som de gerne vil søge efter. Når de indtaster et nyt tegn, vil dit websted kalde søgefunktionen (). Du vil oprette denne funktion i senere trin.
    <div klasse="beholder">
    <h2>Søg efter lande</h2>
    <input id="søgelinjen" autofuldførelse="af" onkeyup="Søg()" type="tekst"
    navn="Søg" pladsholder="Hvad kigger du efter?">
    </div>
    Autofuldførelsesattributten sikrer, at en browser ikke tilføjer sin egen dropdown-menu baseret på tidligere søgetermer.
  4. I samme mappe som din index.html fil, skal du oprette en ny CSS-fil kaldet styles.css.
  5. Udfyld filen med stil for den overordnede webside og søgelinjen:
    krop {
    margin: 0;
    polstring: 0;
    baggrundsfarve: #f7f7f7;
    }
    * {
    skrifttype-familie: "Arial", sans serif;
    }
    .beholder {
    polstring: 100px 25%;
    display: flex;
    flex-retning: kolonne;
    line-højde: 2rem;
    skriftstørrelse: 1.2em;
    farve: #202C39;
    }
    #søgelinje {
    polstring: 15px;
    kant-radius: 5px;
    }
    input[type=tekst] {
    -webkit-overgang: bredde 0.15slet ind-ud;
    overgang: bredde 0.15slet ind-ud;
    }
  6. I index.html, tilføj et link til din CSS-fil inde i head-tagget og under titel-tagget:
    <link rel="stilark" href="styles.css">
  7. Åbn index.html fil i en webbrowser, og se brugergrænsefladen på din søgelinje.

Sådan opretter du listestrengene til søgelinjen

Før brugeren kan søge, skal du oprette en liste over tilgængelige elementer, som de kan søge efter. Du kan gøre dette med en række strenge. En snor er en af ​​de mange datatyper, du kan bruge i JavaScript, og kan repræsentere en sekvens af tegn.

Du kan oprette denne liste dynamisk ved hjælp af JavaScript, da siden indlæses.

  1. Inde index.html, under input-tagget, tilføje en div. Denne div vil vise en rullemenu, der vil indeholde en liste over elementer, der matcher det, brugeren søger efter:
    <div id="liste"></div>
  2. I samme mappe som din index.html fil og styles.css fil, skal du oprette en ny fil kaldet script.js.
  3. Inde script.js, opret en ny funktion kaldet loadSearchData(). Initialér et array inde i funktionen med en liste over strenge. Husk, at dette er en lille statisk liste. En mere kompleks implementering vil skulle tage højde for søgning gennem større datasæt.
    fungereloadSearchData() {
    // Data, der skal bruges i søgefeltet
    lade lande = [
    'Australien',
    'Østrig',
    'Brasilien',
    'Canada',
    'Danmark',
    'Egypten',
    'Frankrig',
    'Tyskland',
    'USA',
    'Vietnam'
    ];
    }
  4. Inde i loadSearchData() og under det nye array skal du hente div-elementet, der viser de matchende søgeelementer til brugeren. Inde i listen div skal du tilføje et ankertag for hvert dataelement på listen:
    // Hent HTML-elementet på listen
    lade liste = dokument.getElementById('liste');
    // Tilføj hvert dataelement som en tag
    lande.for hver((land)=>{
    lade a = dokument.createElement("a");
    a.innerText = land;
    a.classList.add("listeelement");
    liste.appendChild (a);
    })
  5. I kropsmærket af index.html, tilføj onload-hændelsesattributten for at kalde den nye loadSearchData()-funktion. Dette vil indlæse dataene, mens siden indlæses.
    <kropsbelastning ="loadSearchData()">
  6. I index.html, før body-tagget slutter, skal du tilføje et script-tag for at linke til din JavaScript-fil:
    <kropsbelastning ="loadSearchData()">
    <!-- Din websides indhold ->
    <script src="script.js"></script>
    </body>
  7. I styles.css, tilføj lidt styling til rullelisten:
    #liste {
    kant: 1px ensfarvet lysegrå;
    kant-radius: 5px;
    display: blok;
    }
    .listItem {
    display: flex;
    flex-retning: kolonne;
    tekst-dekoration: ingen;
    polstring: 5px 20px;
    farve: sort;
    }
    .listItem:hover {
    baggrundsfarve: lysegrå;
    }
  8. Åben index.html i en webbrowser for at se din søgelinje og listen over tilgængelige søgeresultater. Søgefunktionaliteten virker ikke endnu, men du bør se den brugergrænseflade, den vil bruge:

Sådan opretter du rullemenuen med matchende resultater i søgelinjen

Nu hvor du har en søgelinje og en liste over strenge, som brugerne kan søge i, kan du tilføje søgefunktionaliteten. Når brugeren indtaster i søgefeltet, vil kun visse elementer på listen blive vist.

  1. I styles.css, udskift stilen for listen for at skjule listen som standard:
    #liste {
    kant: 1px ensfarvet lysegrå;
    kant-radius: 5px;
    display: ingen;
    }
  2. I script.js, opret en ny funktion kaldet search(). Husk, at programmet kalder denne funktion, hver gang brugeren indtaster eller fjerner et tegn fra søgefeltet. Nogle applikationer skal ture til en server for at hente information. I sådanne tilfælde kan denne implementering bremse din brugergrænseflade. Du skal muligvis ændre implementeringen for at tage højde for dette.
    fungereSøg() {
    // søgefunktionalitet går her
    }
  3. Inde i search()-funktionen skal du hente HTML div-elementet til listen. Få også HTML-ankertag-elementerne for hvert element på listen:
    lade listeContainer = dokument.getElementById('liste');
    lade listItems = dokument.getElementsByClassName('listItem');
  4. Få det input, som brugeren har indtastet i søgefeltet:
    lade input = dokument.getElementById('søgelinje').værdi
    input = input.toLowerCase();
  5. Sammenlign brugerens input med hvert element på listen. For eksempel, hvis brugeren indtaster "a", vil funktionen sammenligne, hvis "a" er inde i "Australien", derefter "Østrig", "Brasilien", "Canada" og så videre. Hvis det matcher, vil det vise dette element på listen. Hvis det ikke passer, vil det skjule det pågældende element.
    lade ingen resultater = rigtigt;
    for (i = 0; jeg < listItems.length; i++) {
    if (!listItems[i].innerHTML.toLowerCase().includes (input) || input "") {
    listItems[i].style.display="ingen";
    Blive ved;
    }
    andet {
    listItems[i].style.display="bøje";
    ingen resultater = falsk;
    }
    }
  6. Hvis der slet ikke er nogen resultater på listen, skal du skjule listen fuldstændigt:
    listContainer.style.display = ingen resultater? "ingen": "blok";
  7. Klik på index.html fil for at åbne den i en webbrowser.
  8. Begynd at skrive i søgefeltet. Mens du skriver, opdateres listen over resultater til kun at vise matchende resultater.

Brug af en søgelinje til at søge efter matchende resultater

Nu hvor du ved, hvordan du opretter en søgelinje med strengvalg, kan du tilføje mere funktionalitet.

For eksempel kan du tilføje links til dine ankertags for at åbne forskellige sider afhængigt af det resultat, brugeren klikker på. Du kan ændre din søgelinje for at søge gennem mere komplekse objekter. Du kan også ændre koden, så den fungerer med rammer som React.

Abonner på vores nyhedsbrev

Kommentarer

DelTweetDelDelDel
Kopi
E-mail
Del denne artikel
DelTweetDelDelDel
Kopi
E-mail

Linket er kopieret til udklipsholderen

Relaterede emner

  • Programmering
  • Programmering
  • Web-udvikling
  • JavaScript

Om forfatteren

Sharlene Khan(65 artikler udgivet)

Shay arbejder fuld tid som softwareudvikler og nyder at skrive guider til at hjælpe andre. Hun har en bachelor i IT og har tidligere erfaring med kvalitetssikring og vejledning. Shay elsker at spille og spille klaver.