@yagyar001

Как сделать, чтобы при при клике выполнялось только одно событие (событие повешано на все элементы li)?

Всем привет. Учу js. Не знаю как правильно сформулировать вопрос кратко. В общем ситуация такая, есть список ul, в нем произвольное количество li. По клику на li, должен открыться инпут в этом же элементе. На инпуте висит событие о потере фокуса. Соответственно если кликать на все li, то в каждом открывается инпут. Как сделать так, чтобы инпут мог быть открытым только один? То если если сработало событие и на каком то пункте li открылся инпут, на других он не должен открываться. Прошу прощения на столь неясное изложение проблемы, я только учусь и умных слов знаю еще мало)) Помогите пожалуйста.

<ul>
	<li>1</li>
	<li>12</li>
	<li>356</li>
	<li>dfhg</li>
	<li>fghsfg</li>
</ul>


let list = document.querySelectorAll('li');

for (let li of list) {
	li.addEventListener('click', function editLi(){
		let input = document.createElement('input');
		input.value = li.innerHTML;
		li.innerHTML = '';
		li.appendChild(input);
		li.removeEventListener('click', editLi);
		input.addEventListener('blur', function(){
			li.innerHTML = input.value;
			li.addEventListener('click', editLi);
		});
	});
}
  • Вопрос задан
  • 130 просмотров
Решения вопроса 4
Stalker_RED
@Stalker_RED
йа прнс
Ответ написан
Tim-A-2020
@Tim-A-2020
Ответ написан
Комментировать
yarkov
@yarkov Куратор тега JavaScript
Помог ответ? Отметь решением.
При клике на li сначала проходимся по всем и закрываем инпуты. Потом открываем там, где был клик.
Ответ написан
@pilolin
HTML программист
Как по мне задачу можно решить и без js например



а если c js у меня как-то так получилось, не идеально, знаю

Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы