#javascript #html #web-applications #ejs
#javascript #HTML #веб-приложения #ejs
Вопрос:
В веб-приложении со списком задач я использую EJS для добавления элементов в <ul>
список.
Используя javascript, я хочу иметь возможность извлекать индекс элемента списка по щелчку мыши, чтобы либо управлять его CSS
или удалить его в моем массиве элементов toDoArray
, хранящихся в серверной части в node.
<ul>
<% for( var i = 0; i < toDoArray.length ; i ) { %>
<li class="listItem"> <%= toDoArray[i] %> </li>
<% } %>
</ul>
Спасибо
Ответ №1:
Вы можете получить родительский узел в событии click, затем получить все его дочерние элементы, а затем выполнить поиск в этом списке для того, который соответствует элементу, на который был нажат (цель события).
addEventListener( 'click', event => {
const li = event.target;
if (li.tagName.toLowerCase() !== 'li') return;
const lis = Array.from(li.parentNode.children);
const index = lis.indexOf(li);
console.log(index);
} );
<ul>
<li>item
<li>item
<li>item
<li>item
</ul>
Тем не менее, вам, вероятно, было бы лучше поместить UID в данные, а затем включить его в data-
атрибут, иначе вы рискуете из-за состояния гонки удалить неправильный элемент (например, если пользователь загрузил страницу на двух разных вкладках).