Добавление нового элемента в список по клику: JS
Быстрый ответ
Если вам нужно вставить новый элемент <li> в список <ul> с помощью JavaScript, то можно воспользоваться методами createElement и appendChild. Они нуждаются в совместном использовании с обработчиком события addEventListener, который должен быть привязан к кнопке:
document.querySelector('#clickMe').addEventListener('click', () => {
const newListItem = document.createElement('li');
newListItem.textContent = 'Поймай меня, если сможешь!';
document.querySelector('#ulList').appendChild(newListItem);
});
Обязательно введите ID для вашего списка <ul> и кнопки. Что отлично в этом коде? Он создаёт элемент <li>, заполняет его текстом и аккуратно вклеивает в <ul>!

Заметки по улучшению функции
При создании надёжной функции добавления <li> необходимо внимательно продумать несколько аспектов.
Прверка синтаксиса
Синтаксические ошибки или неверные ID могут привести к присвоению значений null. Это сродни поиску темно-серой кошки в темной комнате. Просто, но критически важно для бесперебойной работы кода.
Присвоение ID новому <li>
Присвоение идентификатора новому элементу <li> можно выполнить через свойство id или скрипт setAttribute. Это подобно выбору имени для новорожденного ребёнка:
// Вот это да, наша семья выросла 🍼
newListItem.id = `li-${document.querySelectorAll('#ulList li').length}`;
Выбор между TextContent и innerHTML
Применение textContent поможет избежать XSS-атак. Но если вам необходимо вставлять HTML-теги, то используйте innerHTML, но обязательно с учетом безопасности.
newListItem.textContent = 'Поймали?'; // Вы в безопасности 😇
newListItem.innerHTML = '<span>Ой, и вправду поймали!</span>'; // Используйте с умом 😎
Современные обработчики событий
Используйте современные обработчики событий вместо устаревшего onclick, что позволяет упорядочено разделить логику выполнения кода:
document.querySelector('#clickMe').addEventListener('click', addListItem);
Нумерация новых элементов
Предоставьте каждому создаваемому <li> уникальный порядковый номер, основываясь на уже существующих элементах в <ul>. Заслужило уважение Cay S. Law:
li.textContent = `Элемент ${ul.children.length + 1}`; // Cay S. Law был здесь
Работа со сложным содержимым
Создание элементов <li> со сложным содержимым требует последовательного подхода. Желательно создавать и наполнять вспомогательные элементы отдельно:
const spanElement = document.createElement('span');
spanElement.textContent = 'Подэлемент';
newListItem.appendChild(spanElement); // Семейный подход
Регулярная диагностика кода
Не забывайте на регулярной основе использовать console.log или проверку DOM, чтобы убедиться, что <li> корректно добавлены в <ul>. Возможно, откройтесь для креативности в диагностировании кода?
Визуализация
Представьте строительную площадку, где каждый кирпич — это элемент <li>:
Структура: [🧱🧱]
С каждым кликом добавляется новый элемент, и структура увеличивается:
function newBlock() {
let structure = document.getElementById('building');
let block = document.createElement('li');
// Когда у вас идеальна физическая форма 🏋️♀️
block.appendChild(document.createTextNode('🧱'));
structure.appendChild(block);
}
Стройте ваш список, как вы строите здание, кирпич за кирпичом!
До: [🧱🧱]
После клика: [🧱🧱🧱]
Продвинутые техники
После того, как вы освоились с основами, перед вами появляются улучшенные техники. Обратите внимание на детали:
Динамическое содержимое
Сделайте содержимое элементов более разнообразным с помощью объединения строк и функций для загрузки данных:
li.textContent = `И вот оно, динамический контент: ${fetchDynamicContent()}`; // Свежесть, словно утренний булочник
Сохранение данных между кликами
Вы можете использовать замыкания для сохранения состояния между вызовами функций, как кофейная кружка сохраняет ваше настроение для JavaScript!
Производительность: Скорость имеет значение
Приложите виртуальный DOM или пагинацию для больших списков. Скорость имеет значение, хотя она не всегда гарантирует успех!
Доступность: Все важны
Не забывайте присваивать создаваемым элементам атрибуты role и aria-, чтобы упростить работу скрин-ридеров. Каждый пользователь должен иметь возможность насладиться использованием вашего интерактивного элемента:
li.setAttribute('role', 'listitem'); // Показываем, что каждый элемент важен
Полезные материалы
- Узлы DOM в JavaScript на W3Schools – Упражняйте управление узлами DOM.
- Метод Document: createElement() – Веб-API | MDN – Инструкция по методу
createElement(). - Метод Document: querySelector() – Веб-API | MDN – Научитесь отслеживать неуловимые элементы DOM с помощью
querySelector(). - Метод EventTarget: addEventListener() – Веб-API | MDN – Руководство по
addEventListener(), который будет внимателен к каждой вашей команде. - html – как добавить новый <li> в <ul> при клике с помощью javascript – Stack Overflow – Обменивайтесь мнениями и решениями по добавлению элементов с другими разработчиками.
- Изменение документа – JavaScript.info – Станьте мастером в манипуляции документами с помощью JavaScript.
- Простой JavaScript – Манипулирование DOM элементами – Сосредоточьтесь на чистом JavaScript для управления DOM.


