РЕДАКТИРОВАНИЕ:
Если я правильно понял ваш вопрос, вы хотите сделать так, чтобы каждый раз, когда вы нажимали на значок гамбургера, вы добавляли отзывчивый класс и показывали меню, а когда нажимали на некоторые ссылки - a - теги, чтобы затем закрыть меню. Итак, вот мой отредактированный код, проверил его и он должен работать для вас:
HTML часть:
<!-- Hamburger Menu (for mobile) -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
<div class="topnav" id="myTopnav" style="position:absolute;top:0px;">
<a href="index.html" class="active" class="nav-item" id="fn">#</a>
<a href="#" class="nav-item">#</a>
<a href="#" class="nav-item">#</a>
<a href="#" class="nav-item">#</a>
<a href="#" class="nav-item">#</a>
<a href="#" class="nav-item">#</a>
<a href="#" class="nav-item">#</a>
<a href="#" class="nav-item">#</a>
<a href="javascript:void(0);" class="icon" onclick="myFunction()">
<i class="fa fa-bars"></i>
</a>
</div>
JS часть:
const x = document.getElementById("myTopnav");
function myFunction() {
// Toggle between adding / removing the responsive class from the menu
x.classList.toggle("responsive");
}
// We get all the a elements with class "nav-item", and attach a click
// listener to them which removes the responsive class from myTopNav element.
const theLinks = document.querySelectorAll(".nav-item");
theLinks.forEach(link => link.addEventListener("click", ()=>{
x.classList.remove("responsive");
}))
Протестировал, все заработало, так что просто скопируйте и вставьте это, но попытайтесь понять, что происходит:)