Я работал рано утром, а не ночью, и я отправился в Nodember, поэтому я пропустил несколько рабочих дней из-за этого (я сделал кое-что, но ничего стоящего, чтобы делать пост).

  1. Выпущено обновление, которое постоянно держит в поле зрения общую сумму в $$$, а ввод количества и стоимости стал немного проще для ввода значений (можно нажать «Enter» вместо того, чтобы щелкнуть из ввода).
  2. Исправлена ​​ошибка, из-за которой удаление элементов в случайном порядке не позволяло вам удалить, по крайней мере, последний элемент в вашем списке. Позволь мне объяснить:

Исследовал и нашел:

Если я удалял элементы снизу вверх, независимо от скорости, этот код работал:

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);
    });
  });
}

Бум, черт возьми, работает.