Почему при удалении всех товаров из корзины общая сумма не равна нулю?

Существует корзина с покупками. При добавлении товара в корзину создается экземпляр класса Product_on_basket. Далее собираем все экземпляры в массив через функцию add_to_cart_list.
При открытии корзины пользователь видит список добавленных продуктов и общую цену. Функция cart отрисовывает содержимое корзины, а функция **pluser **суммирует общую сумму.
При удалении товара из корзины мы удаляем из массива cart_list объект, и функция cart заново отрисовывает содержимое корзины. Проблема в том, что при удалении всех продуктов из корзины общая сумма не равняется нулю, а остается равной суммой последнего оставшегося до удаления элемента. Почему так? Как это обойти?

  class Product_on_basket {
    // класс содержит характеристики продукта в корзине 
    static counter = 0;

    constructor(id, name, price) {
      this.id = id;
      this.name = name;
      this.price = price;
      ++Product_on_basket.counter;
    }
  }

  function add_to_cart_list(id, name, price){
    // функция при добавлении продукта в корзину создает новый объект
    // корзины и добавляет его в массив 

    const product = new Product_on_basket(id, name, price);
    cart_list.push(product);
  }



  function cart(){
    // функция отрисовывает содержимое корзины: список продуктов и 
    // общую цену
    let ul  = document.getElementById('shoping_cart_list');
    ul.innerHTML = '';
    for (product in cart_list) {    
    let li = document.createElement('li');
    li.setAttribute('id', `product_cart_id_${cart_list[product].id}`);
    li.innerHTML = `
                    ${cart_list[product].name} - 
                    <span class='cart_price'> ${cart_list[product].price}</span> руб   
                    <button type='button' class='btn btn-outline-primary' 
                      onclick='cart_list.splice(product); cart(); console.log(cart_list.length)'
                      >
                      X
                    </button>`;
    ul.appendChild(li);
    let p = document.getElementById('total_price');
      p.innerHTML = `Итог: <span id='price'>${pluser()}</span> руб`;
    
  }
  }


  function pluser(){
    // функция возвращает сумму цены товаров в корзине
    let total_price = 0;
    for (let i = 0; i < cart_list.length; i++) {
      total_price += parseFloat(cart_list[i].price);
    }
    return total_price.toFixed(2);
  }

Ответы (1 шт):

Автор решения: Dmitriy Begishev

Проблема решилась довольно просто: были не верно указаны фигурные скобки.
Когда удаляешь все товары из корзины и массив с продуктами пуст, то цикл с отрисовкой списка продуктов не отрабатывает штатно и останавливается до того, как мы вызываем функцию pluser, и поэтому она не пересчитывала общую сумму товаров в корзине.
Я просто исключил из цикла for блок с функцией pluser.

  function cart(){
    // функция отрисовывает содержимое корзины: список продуктов и 
    // общую цену
    let ul  = document.getElementById('shoping_cart_list');
    ul.innerHTML = '';
    for (product in cart_list) {    
    let li = document.createElement('li');
    li.setAttribute('id', `product_cart_id_${cart_list[product].id}`);
    li.innerHTML = `
                    ${cart_list[product].name} - 
                    <span class='cart_price'> ${cart_list[product].price}</span> руб   
                    <button type='button' class='btn btn-outline-primary' 
                      onclick='cart_list.splice(product); cart(); console.log(cart_list.length)'
                      >
                      X
                    </button>`;
    ul.appendChild(li);
    }
    let p = document.getElementById('total_price');
    p.innerHTML = `Итог: <span id='price'>${pluser()}</span> руб`;
    
  }
→ Ссылка