lastName = document.querySelector('.last');
lastName.addEventListener('change', function () {
addRow();
count();
});
};
Это функция которая автоматически должна добавлять строку в таблицу, за это отвечает addRow() и оно работает, так же есть функция count() которая считает троки и последней присваивает класс "last", таким образом что последняя строка всегда имеет этот класс, а на остальных его нету. Но вот проблема, если по умолчанию есть таблица к примеру с 3 строками, то после ввода текста в последнюю, появляется новая строка, но вот затем если я ввожу текст еже в новую последнюю строку, то ничего не происходит. Но если продолжу вводить в 3 строку которая изначально была последней, то новая строка снова добавляется в конец, что я делаю не так в коде?
а почему это через css не решить? :last-of-type :nth-last-of-type :last-child и т. п.
я имел в виду выбирать не по классу, а селектором
не совсем вас понял
querySelector работает по селектору же, можно селектором сразу вытащить последний. и он всегда будет находить самый последний, для этого не нужно классы туда-сюда перевешивать
то есть querySelector('div:last-child') ?
к примеру - так
Нет, тоже самое. Думаю проблема в том что моя функция находит этот последний элемент только один раз и больше не меняет его. Не понимаю как это можно исправить.
а, тьфу, ну да. вы вешаете же слушатель на этот. убирайте отсюда и вешайте на новый последний по изменению. или делегирование
с делегированием знаком немного, попробую написать сейчас. Уже делал на нём кнопки переключающие контент)
https://codepen.io/Innoel/pen/VwrMeKd самый просто пример
function autoRow() { let grid = document.querySelector('.grid'); grid.addEventListener('change', function (event) { target = event.target; if (target && target.classList.contains('last')) { addRow(); count(); }; }); };
Обсуждают сегодня