Я работал рано утром, а не ночью, и я отправился в Nodember, поэтому я пропустил несколько рабочих дней из-за этого (я сделал кое-что, но ничего стоящего, чтобы делать пост).
- Выпущено обновление, которое постоянно держит в поле зрения общую сумму в $$$, а ввод количества и стоимости стал немного проще для ввода значений (можно нажать «Enter» вместо того, чтобы щелкнуть из ввода).
- Исправлена ошибка, из-за которой удаление элементов в случайном порядке не позволяло вам удалить, по крайней мере, последний элемент в вашем списке. Позволь мне объяснить:
Исследовал и нашел:
Если я удалял элементы снизу вверх, независимо от скорости, этот код работал:
function updateTotalOnItemDelete(inputs) { inputs.forEach((input) => { // avoid multiple event listeners if (input.classList.contains('listener--attached')) return; // mark input as listener attached input.classList.add('listener--attached'); input.addEventListener('click', () => { // BUG: not doing what I expect const index = inputs.indexOf(input); deleteItemFromItemsAPI(index); }); }); }
Однако, если я попытаюсь удалить элементы в случайном порядке, индекс, который представляет каждый элемент во всех оставшихся кнопках удаления, отключится. В большинстве случаев индекс, представленный кнопкой удаления, был на 1 слишком большим.
Таким образом, с приведенным выше кодом, когда я нажимал кнопку удаления, он находил только те кнопки удаления, которые были до него, в переменной массива кнопок удаления. Итак, если я нажму на 9-й элемент, а затем на 4-й, вы увидите, как он видит кнопки удаления:
Я не нашел, почему это произошло, но я знал, что для решения требуется самый обновленный массив того, сколько кнопок удаления было, чтобы получить точный индекс нажатой кнопки удаления для отправки в мою базу данных для удаления правильного элемента из списка пользователя (по индексу). Итак, я просто изменил приведенный выше код на этот:
function updateTotalOnItemDelete(inputs) { inputs.forEach((input) => { // avoid multiple event listeners if (input.classList.contains('listener--attached')) return; // mark input as listener attached input.classList.add('listener--attached'); input.addEventListener('click', () => { // BUG: not doing what I expect const index = inputs.indexOf(input); deleteItemFromItemsAPI(index); }); }); }
Бум, черт возьми, работает.