.forEach или .reduce для работы с DOM

Допишите функцию при клике на кнопку «Использовать купон на 15%» вызывается функция applyDiscount, она должна применить скидку 15% к каждому товару в корзине и изменить итоговую стоимость заказа. Помните, что скидка должна примениться один раз. Для решения этой задачи вам поможет функция — getDomNodesBySelector.

Нужно использовать .forEach или .reduce. Написала функцию, но скидка после нажатия не применяется.

function getDomNodesBySelector(selector) {
  return Array.from(document.querySelectorAll(selector));
}

document.querySelector('.total__button').addEventListener('click', applyDiscount);


function applyDiscount() { 
 
}

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

Автор решения: Art3mk4
function applyDiscount() {
    var items = [];
    getDomNodesBySelector('.price-value').forEach(function(value, index) {
        items.push(Number(value.innerHTML));
    });

    return items.reduce(function (previous, current) {
        return previous - previous * 0.15 + current - current * 0.15;
    });
}
→ Ссылка
Автор решения: S1Ash
function getDomNodesBySelector(selector) {
  return [...document.querySelectorAll(selector)];
}

document.querySelector('.total__button').addEventListener('click', applyDiscount);

function applyDiscount() {
  let totalSum = 0;
  getDomNodesBySelector(".price-value").forEach(item => {
    item.innerHTML = item.innerHTML*0.85;
    totalSum += +item.innerHTML
  })
  document.querySelector(".total-price-value").innerHTML = totalSum
  this.removeEventListener('click', applyDiscount);
}
→ Ссылка