Reputation: 171
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
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