Не могу увидеть ошибку, вроде по логике все правильно.
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style>
.input_services {
background-image: url("../images/searchicon.png");
background-position: 10px 7px;
background-repeat: no-repeat;
font-size: .6rem;
font-style: italic;
width: 100%;
padding: 12px 20px 12px 40px;
border: 1px solid #ddd;
margin-bottom: 12px;
}
.list {
list-style-type: none;
padding: 0;
margin: 0;
}
.list a {
border: 1px solid #ddd;
margin-top: -1px; /* Prevent double borders */
background-color: #f6f6f6;
padding: 12px;
text-decoration: none;
color: black;
display: none;
}
.list a:hover:not(.header) {
background-color: #eee;
}
.show{
display: block;
}
.hide{
display: none;
}
.my_ul a.show {
display: block;
}
</style>
</head>
<body>
<input type="text" class="input_services" placeholder="Введите запрос, например, установка ванны">
<ul class="list">
<li class="list_services"><a href="#">Алмазная резка</a></li>
<li class="list_services"><a href="#">Гидроизоляция</a></li>
<li class="list_services"><a href="#">Заливка пола</a></li>
<li class="list_services"><a href="#">Замена канализации</a></li>
<li class="list_services"><a href="#">Замена проводки</a></li>
<li class="list_services"><a href="#">Замена радиаторов</a></li>
<li class="list_services"><a href="#">Замена труб</a></li>
</ul>
<script>
let inputServices = document.querySelector(".input_services");
let filter = inputServices.value;
let list = document.querySelector(".list");
let listServices = document.querySelector(".list_services");
let a;
function services(){
for(let i=0; i<listServices; i++){
a =listServices[i].getElementsByTagName("a")[0];
if(a.innerHTML.indexOf(filter)>-1){
a.classList.add("show");
}else{
a.classList.remove("show");
}
}
}
inputServices.focus = services;
</script>
</body>
</html>