probably-asskicker
probably-asskicker

Reputation: 171

Trying to display data from my searchbox but looks like it is not working at all

I am trying make a Search box for my website where I can search for the servers I have listed. I have attached a ngrok Tunnel Link to my localhost. HERE

Now this is my HTML code for the search bar:

            <section class="section_sapce">
                <div class="row">
                    <div class="container" style="margin-bottom: 10px">
                        <div class="col-sm-6 com-md-4 center-block">
                            <div class="row no-gutter cta-content">
                                <div class="location-head">
                                    <h2 class="text-uppercase text-center">Search Location</h2>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
                <div class="row">
                    <div class="container">
                        <div class="col-sm-10 com-md-8 center-block">
                            <form class="form-inline domainsearch bg_white" method="post" action="#">
                                <div class="row no-gutter">
                                    <div class="col-sm-10">
                                        <input type="text" id="searchbar" onkeyup="searchLocation()" class="form-control" name="searchbar" placeholder="Enter your location">
                                    </div>

                                    <div class="col-sm-2">
                                        <button type="submit" class="btn btn-new" style="width:100%">SEARCH</button>
                                    </div>
                                </div>
                            </form>
                        </div>
                    </div>
                </div>
            </section>

This is my HTML location element

<div class="location">
                    <div class="row dedicated-box">                 
                        <div class="col-sm-1 dedicated-img">
                        <a href="dedicated-servers-in-atlanta.php">
                            <span>
                                <img src="images/countries/united-states.png" alt="Dedicated Servers in Atlanta">
                            </span>
                            <p id="locationOf">Alaska</p>
                        </a>
                    </div>
                </div>

This is the code for my JS script file:

function searchLocation() {
    let input = document.getElementById('searchbar').value;
    input = input.toLowerCase();
    let location = document.getElementsByClassName('location');
    let locationName = document.getElementById('locationOf');
    for (var i = 0; i < location.length; i++) {
        if (!location[i].innerHTML.toLowerCase().includes(input)) {
            location[i].style.display = "none";
        }
        else if (input == locationName.innerHTML) {
            return location[i].style.display.location.innerHTML;
        }
    }
}

Can you please check it and tell me what am I doing wrong? You can check out the Ngrok link too to see it. Thanks in advance

Upvotes: 1

Views: 45

Answers (1)

Avinash Dalvi
Avinash Dalvi

Reputation: 9301

Problem is not with script its with your

<div class="location"> is nested inside check your php code where your added loop to iterate this name.

Check my snippet i arrange in proper manner its working.

function getParent(ele, parentClass="parent"){
   var e = ele;
   while(!e.classList.contains(parentClass)){
      e=e.parentElement;
   }
  // console.log(e);
   return e;
}

function searchLocation() {
    let input = document.getElementById('searchbar').value;
    //console.log(input);
    input = input.toLowerCase();
    let location = document.getElementsByClassName('location');
    
    if(input == ""){
       for (var i = 0; i < location.length; i++) {
           location[i].style.display = "block";
       }
    }
    else{
    
    let locationName = document.getElementsByClassName('locationOf');
    var parent;
    for (var i = 0; i < locationName.length; i++) {
    parent = getParent(locationName[i], "location");
        if (!locationName[i].innerHTML.toLowerCase().includes(input)) {
            parent.style.display = "none";
        }
        else if (input == locationName.innerHTML) {
            return parent.style.display = "block";
        }
    }
    }
}
<section class="section_sapce">
  <div class="row">
    <div class="container" style="margin-bottom: 10px">
      <div class="col-sm-6 com-md-4 center-block">
        <div class="row no-gutter cta-content">
          <div class="location-head">
            <h2 class="text-uppercase text-center">Search Location</h2>
          </div>
        </div>
      </div>
    </div>
  </div>
  <div class="row">
    <div class="container">
      <div class="col-sm-10 com-md-8 center-block">
        <form class="form-inline domainsearch bg_white" method="post" action="#">
          <div class="row no-gutter">
            <div class="col-sm-10">
              <input type="text" id="searchbar" onkeyup="searchLocation()" onkeydown="searchLocation()" class="form-control" name="searchbar" placeholder="Enter your location">
            </div>

            <div class="col-sm-2">
              <button type="submit" class="btn btn-new" style="width:100%">SEARCH</button>
            </div>
          </div>
        </form>
      </div>
    </div>
  </div>
</section>


<div class="location">
  <div class="row dedicated-box">
    <div class="col-sm-1 dedicated-img">
      <a href="dedicated-servers-in-atlanta.php">
        <span>
								<img src="images/countries/united-states.png" alt="Dedicated Servers in Atlanta">
							</span>
        <p class="locationOf">Arizona</p>
      </a>
    </div>
  </div>
</div>
<div class="location">
  <div class="row dedicated-box">
    <div class="col-sm-1 dedicated-img">
      <a href="dedicated-servers-in-atlanta.php">
        <span>
								<img src="images/countries/united-states.png" alt="Dedicated Servers in Atlanta">
							</span>
        <p class="locationOf">Michigan</p>
      </a>
    </div>
  </div>
</div>
<div class="location">
  <div class="row dedicated-box">
    <div class="col-sm-1 dedicated-img">
      <a href="dedicated-servers-in-atlanta.php">
        <span>
								<img src="images/countries/united-states.png" alt="Dedicated Servers in Atlanta">
							</span>
        <p class="locationOf">Detroit</p>
      </a>
    </div>
  </div>
</div>
<div class="location">
  <div class="row dedicated-box">
    <div class="col-sm-1 dedicated-img">
      <a href="dedicated-servers-in-atlanta.php">
        <span>
								<img src="images/countries/united-states.png" alt="Dedicated Servers in Atlanta">
							</span>
        <p class="locationOf">New York</p>
      </a>
    </div>
  </div>
</div>
<div class="location">
  <div class="row dedicated-box">
    <div class="col-sm-1 dedicated-img">
      <a href="dedicated-servers-in-atlanta.php">
        <span>
								<img src="images/countries/united-states.png" alt="Dedicated Servers in Atlanta">
							</span>
        <p class="locationOf">Atlanta</p>
      </a>
    </div>
  </div>
</div>
<div class="location">
  <div class="row dedicated-box">
    <div class="col-sm-1 dedicated-img">
      <a href="dedicated-servers-in-atlanta.php">
        <span>
								<img src="images/countries/united-states.png" alt="Dedicated Servers in Atlanta">
							</span>
        <p class="locationOf">Atlanta</p>
      </a>
    </div>
  </div>
</div>
<div class="location">
  <div class="row dedicated-box">
    <div class="col-sm-1 dedicated-img">
      <a href="dedicated-servers-in-atlanta.php">
        <span>
								<img src="images/countries/united-states.png" alt="Dedicated Servers in Atlanta">
							</span>
        <p class="locationOf">Atlanta</p>
      </a>
    </div>
  </div>
</div>
<div class="location">
  <div class="row dedicated-box">
    <div class="col-sm-1 dedicated-img">
      <a href="dedicated-servers-in-atlanta.php">
        <span>
								<img src="images/countries/united-states.png" alt="Dedicated Servers in Atlanta">
							</span>
        <p class="locationOf">Atlanta</p>
      </a>
    </div>
  </div>
</div>
<div class="location">
  <div class="row dedicated-box">
    <div class="col-sm-1 dedicated-img">
      <a href="dedicated-servers-in-atlanta.php">
        <span>
								<img src="images/countries/united-states.png" alt="Dedicated Servers in Atlanta">
							</span>
        <p class="locationOf">Atlanta</p>
      </a>
    </div>
  </div>
</div>

Upvotes: 1

Related Questions