Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function displayNewPriceForProducts(itemsWithDiscount, productIndividualSelector, savedAmountIndividual, productTotalSelector, savedAmountTotal) {
- if (productTotalSelector) {
- // 1. Находим на странице все элементы, содержащие total price для всех товаров в корзине
- var elementsTotal = document.querySelectorAll(htmlMarkers.selectorNotCreated(productTotalSelector));
- if (elementsTotal.length) {
- lib.wrList(itemsWithDiscount).forEach(function (item) {
- // 2. Прокручиваем в цикле список товаров (item), для которых нужно отобразить скидку
- var minSteps = 99999;
- var itemElementsTotal = [];
- lib.wrList(elementsTotal).forEach(function (elTotal) {
- // 3. Прокручиваем элементы total price
- var parent = elTotal;
- var prodLink = null;
- var steps = 0;
- while (parent.tagName !== 'BODY' && prodLink === null) {
- // 4. От элемента total price двигаемся вверх по DOM и считаем шаги
- // 5. В каждом узле ищем ссылку на товар item.url
- // 6. Элемент total price, для которого эта ссылка будет найдена за наименьшее
- // к-во шагов - нужный нам элемент, содержащий total price текущего товара item
- // Если будет найдено несколько элементов на одинаковом расстоянии от ссылки,
- // они все будут обработаны одинаково.
- steps++;
- parent = parent.parentNode;
- prodLink = parent.querySelector('a[href="' + item.url + '"], a[href$="' + item.url + '"]');
- }
- if (prodLink) {
- if (steps < minSteps) {
- minSteps = steps;
- itemElementsTotal = [];
- }
- if (steps <= minSteps) {
- itemElementsTotal.push(elTotal);
- }
- }
- });
- if (itemElementsTotal.length) {
- lib.wrList(itemElementsTotal).forEach(function (elementTotal) {
- displayNewPrice(
- elementTotal,
- item.total,
- item.price * item.quantity,
- savedAmountTotal,
- 'total',
- item
- );
- });
- }
- });
- }
- }
- if (productIndividualSelector) {
- // Делаем тоже самое для individual price
- var elementsIndividual = document.querySelectorAll(htmlMarkers.selectorNotCreated(productIndividualSelector));
- if (elementsIndividual.length) {
- lib.wrList(itemsWithDiscount).forEach(function (item) {
- var minSteps = 99999;
- var itemElementsIndividual = [];
- lib.wrList(elementsIndividual).forEach(function (elIndividual) {
- var parent = elIndividual;
- var prodLink = null;
- var steps = 0;
- while (parent.tagName !== 'BODY' && prodLink === null) {
- steps++;
- parent = parent.parentNode;
- prodLink = parent.querySelector('a[href="' + item.url + '"], a[href$="' + item.url + '"]');
- }
- if (prodLink) {
- if (steps < minSteps) {
- minSteps = steps;
- itemElementsIndividual = [];
- }
- if (steps <= minSteps) {
- itemElementsIndividual.push(elIndividual);
- }
- }
- });
- if (itemElementsIndividual.length) {
- lib.wrList(itemElementsIndividual).forEach(function (elementIndividual) {
- displayNewPrice(
- elementIndividual,
- Math.round((item.total / item.quantity) * 100) / 100,
- item.price,
- savedAmountIndividual,
- 'individual',
- item
- );
- });
- }
- });
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement