function navFunction(id) {
var elements = document.querySelectorAll(".noLink1");
for (var i = 0; i < elements.length; i++) {
(elements[i].id === id).addEventListener('click', function(e) {
e.preventDefault();
alert("ok");
}, false);
}
}
<li class="dropdown sort-2">
<a href="/template/category/" onclick="navFunction('nav-id-2')" class="dropbtn noLink1">Название категории (не должен перейти по ссылке)
<i class="fa fa-caret-down"></i>
</a>
<ul class="dropdown-menu" id="nav-id-2">
<li><a href="">Подкатегория</a></li>
<li><a href="">Длинное название подкатегории</a></li>
<li><a href="">Название подкатегории</a></li>
</ul>
</li>
click
на элемент только после клика onclick
на нем, а не при созданием документа.true
или false
elements[i].id === id
. Нужно просто прописать не внутри функции, а в основной части скрипта:var elements = document.querySelectorAll(".noLink1");
for (var i = 0; i < elements.length; i++) {
elements[i].addEventListener('click', function(e) {
e.preventDefault();
alert("ok");
}, false);
}