Общее число затрат – NaN

У меня есть сайт и корзина. Я могу положить вещи туда. В этой корзине тоже есть счетчик товаров, но была одна проблема. Теперь мне нужно найти стоимость товаров, добавленных в корзину через консоль. Но когда вы пытаетесь это сделать, консоль возвращает NaN.

const cartWrapper = document.querySelector('#check');

window.addEventListener('click', function(event) {
  if (event.target.hasAttribute('data-cart')) {

    const card = event.target.closest('.dlg-modal')

    //Собираем данные
    const productInfo = {
      id: card.dataset.id,
      imgSrc: card.querySelector('.gui__pizzablock').getAttribute('src'),
      title: card.querySelector('.productTitle').innerText,
      price: card.querySelector('.priceTitle').innerText,
      description: card.querySelector('.gui__description').innerText,
      counter: card.querySelector('[data-counter]').innerText,
    };


    const itemInCart = cartWrapper.querySelector(`[data-id = "${productInfo.id}"]`);


    if (itemInCart) {
      alert('present')

      const counterElement = itemInCart.querySelector('[data-counter]')
      counterElement.innerHTML = parseInt(counterElement.innerHTML) + 1;
      alert('wow')

    } else {

      const cartItemHTML = `<div class = "item__block">

            <div data-id = "${productInfo.id}">





               <img class = "img__rubb" src = "${productInfo.imgSrc}">
               <p style = "margin: -73px 100px">${productInfo.title}</p>
               <p class = "description__rubb" style = "margin: 81px 100px">${productInfo.description}</p>
               <hr class = "hr__rubb">
               <p style = "margin: 70px 15px"><span class = "amount__price">${productInfo.price}</span>руб.</p>
               <!--               <div class = "items__control" data-action = "minus">-</div>-->
               <div  class = "counter__rubb">
                  <div  class = "counter__rubb_text">
                     <a class = "minus__plus__rubb" style = " -moz-user-select: none; display: inline-flex;   font-size: 21px" data-action = "minus">-</a>
                     <div style = "display: inline-flex; cursor: default; -moz-user-select: none;  " data-counter>${productInfo.counter}</div>
                     <a class = "minus__plus__rubb" style = " -moz-user-select: none; display: inline-flex; font-size: 21px;" data-action = "plus">+</a>
                  </div>



               </div>
               <div class = "buy__rubb">
               <div class = "buy__rbb__boxes">
                  <p style = "margin: 1% 3%; display: inline-flex">1 товар</p>
                  <p style = "margin: 1% 30.5%; display: inline-flex">0&nbsp;руб.</p>
                  <hr class = "hr__rubba">
                  <p style = "margin: 1% 3%; font-size: 16px; display: inline-flex">Сумма заказа</p>
                  <p style = "margin: 1% 22.5%; display: inline-flex">0&nbsp;руб.</p>
                  <div class = "btn__rubb__podval">
                  <a href = "#" class = "btn__rubb">К&nbsp;оформлению&nbsp;заказа</a>
                     </div>
                  </div>
               </div>
            </div>
         </div>`;
      cartWrapper.insertAdjacentHTML('beforeend', cartItemHTML)


    }
    offCartStatus();
  }
})

function calcPrice() {
  const cartItems = document.querySelectorAll('.item__block')

  let totalPrice;
  cartItems.forEach(function(item) {
    const amount = item.querySelector('[data-counter]');
    const price = item.querySelector('.amount__price');

    const currentPrice = parseInt(amount.innerHTML) * parseFloat(price.innerHTML);
    totalPrice = totalPrice + currentPrice
  })
  console.info(totalPrice)
}
<div data-id = "999" id = "check" class = "dlg-modal dlg-modal-fade" style = "background: #f3f3f3; width: 790px; height: 100%; left: 100%">
  <div class = "item__block__container">
    <div data-cart-empty class = "emptyContainer">
      <div class = "emptyBlock">
        <img class = "emptyBlock" src = "notfinedCart.svg" style = "">

        <h2 class = "emptyBlock">Empty!</h2>
        <p class = "emptyBlock"><br>Oh!!!<br>Cart empty:(<br>Select something</p>
      </div>

    </div>

Примечание. Я открываю корзину во всплывающем окне.

Если не ставить все в переменную, то ошибок нет.

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
77
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вам нужно установить начальное значение totalPrice, чтобы вы не пытались добавить неопределенное значение.

let totalPrice = 0;

function calcPrice() {
  const cartItems = document.querySelectorAll('.item__block')

  let totalPrice = 0;
  cartItems.forEach(function(item) {
    const amount = item.querySelector('[data-counter]');
    const price = item.querySelector('.amount__price');

    const currentPrice = parseInt(amount.innerHTML) * parseFloat(price.innerHTML);
    totalPrice += currentPrice;
  })
  console.info(totalPrice)
}

calcPrice();
<div class = "item__block">
  <span class = "amount__price">100</span>
  <div data-counter>5</div>
</div>
<div class = "item__block">
  <span class = "amount__price">10</span>
  <div data-counter>3</div>
</div>

Другие вопросы по теме