<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Search Bar | JS</title>
    <link rel="stylesheet" href="styles.css">
</head>
<body>

    <h1>Search Feature using JS</h1>

    <div class="content">
        <input type="text" onkeyup="search()" placeholder="Search for.." autofocus />
        <ul>
            <li class="languages">Python</li>
            <li class="languages">C++</li>
            <li class="languages">Java</li>
            <li class="languages">C</li>
            <li class="languages">JavaScript</li>
            <li class="languages">PHP</li>
            <li class="languages">Perl</li>
            <li class="languages">Ruby</li>
            <li class="languages">Go</li>
            <li class="languages">CSS</li>
        </ul>
        <p class="noItemsText">No items to display</p>
    </div>
   
    <script src="main.js"></script>
</body>
</html>
* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
    list-style-type: none;
}

body {
    background: #eee;
    font-family: 'Gill Sans', 'Gill Sans MT', Calibri, 'Trebuchet MS', sans-serif;
    font-size: 1.1rem;
    text-align: center;
}

h1 {
    text-shadow: 
        2px 3px 4px #456,
        3px 4px 5px #654;
}

input {
    /* height: 1.5rem; */
    max-width: 300px;
    width: fit-content;
    margin: 1rem auto;
    outline: none;
    padding: 10px;
    font-size: 1.1rem;
}

.content {
    /* border: 3px solid black; */
    max-width: 500px;
    margin: auto;
    margin-bottom: 50px;
}


.languages {
    background-color: #f5deb3;
    margin: 2px auto;
    padding: 10px;
}

.languages:hover {
    background-color: #f5deb3aa;
}

.noItemsText {
    display: none;
}
function search() {
    let input = document.querySelector("input").value.toLowerCase()
    let list = document.querySelectorAll("ul > li")
    let noItemsText = document.querySelector(".noItemsText")
    let displayCounter = 0

    // console.log(((list[0].innerHTML).toLowerCase()).includes("pyt", 0))
    list.forEach((lang) => {
        if ((lang.innerHTML.toLowerCase()).includes(input, 0) === false){
            lang.style.display = "none";
        } else {
            lang.style.display = "list-item";
        }

        if (lang.style.display === "none"){
           displayCounter++;
        }
    });

    if (displayCounter === list.length){
        list.innerHTML = "No items to display";
        noItemsText.style.display = "initial"
    } else {
        noItemsText.style.display = "none"
    }
}

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

This Pen doesn't use any external JavaScript resources.