Необходимо добавить еще один DIV. И получить значение.
Открываю корзину и имею такую структуру:
<div class="t706__cartwin-products"> <div class="t706__product" data-cart-product-i="0"> <div class="t706__product-amount t-descr t-descr_sm">1 210 р.</div> </div> <div class="t706__product" data-cart-product-i="1"> <div class="t706__product-amount t-descr t-descr_sm">2 110 р.</div> </div> <div class="t706__product" data-cart-product-i="2"> <div class="t706__product-amount t-descr t-descr_sm">567 р.</div> </div> </div> Необходимо добавить еще один DIV. И получить значение (выделил). Поместить его в добавленный DIV c -20% Получить примерно надо такое: <div class="t706__product" data-cart-product-i="0"> <div class="t706__product-amount t-descr t-descr_sm">1 210 р.</div> <div class="t706__product-amount-sale">968 р.</div> </div> Вот наработки по добавлению DIV. Но почему то не выходит. Нужна помощь. <script> $( document ).ready(function() { var number = 0; //Функция создания DIV function createinput(){ setTimeout(function() { var spisok = $(".t706__cartwin-products").length; for (var x = 0; x <= spisok; x++) { $('.t706__cartwin-products:eq('+x+')').append('<div class="t706__product-amount-sale t-descr t-descr_sm">1 210 р.</div>'); number = $('.t706__cartwin-products:eq('+x+')').html(); }; }; //При открытии корзины запускаем функцию $( "[href = #order] , .t706__carticon-wrapper" ).click(function() {createinput();}); </script> |
Зачем setTimeout?
t706__cartwin-products и надо полагать здесь 706, это ID продукта, а значит такой в корзине будет только один, зачем цикл? Этот же элемент уже имеет <div class="t706__product-amount t-descr t-descr_sm">1 210 р.</div>, зачем же его добавлять и при этом не понятно как вы хотите получить <div class="t706__product-amount-sale">968 р.</div>? |
svileff,
Пожалуйста, отформатируйте свой код! Для этого его можно заключить в специальные теги: js/css/html и т.п., например: [html run] ... минимальный код страницы с вашей проблемой [/html] О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting. |
svileff,
<!DOCTYPE html> <html> <head> <title>Untitled</title> <meta charset="utf-8"> <style type="text/css"> </style> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> <script> $(function() { function numberWithCommas(str) { return (+str).toFixed(2).replace(/(\d+)(\.\d+)?/g, function (c, b, a) { return b.replace(/(\d)(?=(\d{3})+$)/g, "$1 ") + a }); } $(".t-descr_sm").each(function(i, el) { var num = (el.textContent.replace(/[^0-9.]/g, "") || 0) * 0.8; var txt = numberWithCommas(num); $(el).after(`<div class="t706__product-amount-sale">${txt} р.</div>`) }) }); </script> </head> <body> <div class="t706__cartwin-products"> <div class="t706__product" data-cart-product-i="0"> <div class="t706__product-amount t-descr t-descr_sm">1 210 р.</div> </div> <div class="t706__product" data-cart-product-i="1"> <div class="t706__product-amount t-descr t-descr_sm">2 110 р.</div> </div> <div class="t706__product" data-cart-product-i="2"> <div class="t706__product-amount t-descr t-descr_sm">567 р.</div> </div> </div> </body> </html> |
У меня DIV добавился не в том месте где надо и 0.00 показывает. Видима я структуру не всю указал. Вот вся структура корзины.
<div class="t706__cartwin-products"> <div class="t706__product" data-cart-product-i="0"> <div class="t706__product-thumb"> <div class="t706__product-imgdiv" style="background-image:url(https://static.tildacdn.com/tild3632-3963-4232-b737-393335343436/903417_S.jpg);"> </div> </div> <div class="t706__product-title t-descr t-descr_sm">Elizavecca Milky Piggy Hell-Pore Longolongo Gronique Gold Mask Pack<div style="opacity:0.7;font-size:12px;font-weight:400;">903417</div> </div> <div class="t706__product-plusminus t-descr t-descr_sm"> <span class="t706__product-minus"> <img src="https://static.tildacdn.com/lib/linea/c8eecd27-9482-6c4f-7896-3eb09f6a1091/arrows_circle_minus.svg" style="width:16px;height:16px;border:0;"></span> <span class="t706__product-quantity">3</span><span class="t706__product-plus"><img src="https://static.tildacdn.com/lib/linea/c47d1e0c-6880-dc39-ae34-521197f7fba7/arrows_circle_plus.svg" style="width:16px;height:16px;border:0;"></span> </div> <div class="t706__product-amount t-descr t-descr_sm">3 861 р.</div> <div class="t706__product-del"><img src="https://static.tildacdn.com/lib/linea/1bec3cd7-e9d1-2879-5880-19b597ef9f1a/arrows_circle_remove.svg" style="width:20px;height:20px;border:0;"> </div> </div> <div class="t706__product" data-cart-product-i="1"> <div class="t706__product-thumb"> <div class="t706__product-imgdiv" style="background-image:url(https://static.tildacdn.com/tild6130-6561-4633-a631-306663633061/904117_S.jpg);"> </div> </div> <div class="t706__product-title t-descr t-descr_sm">Elizavecca Milky Piggy Vitamin C 21% Ample Mask<div style="opacity:0.7;font-size:12px;font-weight:400;">904117</div> </div> <div class="t706__product-plusminus t-descr t-descr_sm"><span class="t706__product-minus"><img src="https://static.tildacdn.com/lib/linea/c8eecd27-9482-6c4f-7896-3eb09f6a1091/arrows_circle_minus.svg" style="width:16px;height:16px;border:0;"></span><span class="t706__product-quantity">1</span><span class="t706__product-plus"><img src="https://static.tildacdn.com/lib/linea/c47d1e0c-6880-dc39-ae34-521197f7fba7/arrows_circle_plus.svg" style="width:16px;height:16px;border:0;"></span> </div> <div class="t706__product-amount t-descr t-descr_sm">1 320 р.</div> <div class="t706__product-del"><img src="https://static.tildacdn.com/lib/linea/1bec3cd7-e9d1-2879-5880-19b597ef9f1a/arrows_circle_remove.svg" style="width:20px;height:20px;border:0;"> </div> </div> </div> Соответственно надо скидку поставить после цены. |
svileff,
так укажите полный селектор в строке 19 |
svileff,
<!DOCTYPE html> <html> <head> <title>Untitled</title> <meta charset="utf-8"> <style type="text/css"> </style> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> <script> $(function() { function numberWithCommas(str) { return (+str).toFixed(0).replace(/(\d+)(\.\d+)?/g, function (c, b, a) { return b.replace(/(\d)(?=(\d{3})+$)/g, "$1 ") + (a || "") }); } $(".t706__product-amount.t-descr.t-descr_sm").each(function(i, el) { var num = (el.textContent.replace(/[^0-9.]/g, "") || 0) * 0.8; var txt = numberWithCommas(num); $(el).after(`<div class="t706__product-amount-sale">${txt} р.</div>`) }) }); </script> </head> <body> <div class="t706__cartwin-products"> <div class="t706__product" data-cart-product-i="0"> <div class="t706__product-thumb"> <div class="t706__product-imgdiv" style="background-image:url(https://static.tildacdn.com/tild3632-3963-4232-b737-393335343436/903417_S.jpg);"> </div> </div> <div class="t706__product-title t-descr t-descr_sm">Elizavecca Milky Piggy Hell-Pore Longolongo Gronique Gold Mask Pack<div style="opacity:0.7;font-size:12px;font-weight:400;">903417</div> </div> <div class="t706__product-plusminus t-descr t-descr_sm"> <span class="t706__product-minus"> <img src="https://static.tildacdn.com/lib/linea/c8eecd27-9482-6c4f-7896-3eb09f6a1091/arrows_circle_minus.svg" style="width:16px;height:16px;border:0;"></span> <span class="t706__product-quantity">3</span><span class="t706__product-plus"><img src="https://static.tildacdn.com/lib/linea/c47d1e0c-6880-dc39-ae34-521197f7fba7/arrows_circle_plus.svg" style="width:16px;height:16px;border:0;"></span> </div> <div class="t706__product-amount t-descr t-descr_sm">3 861 р.</div> <div class="t706__product-del"><img src="https://static.tildacdn.com/lib/linea/1bec3cd7-e9d1-2879-5880-19b597ef9f1a/arrows_circle_remove.svg" style="width:20px;height:20px;border:0;"> </div> </div> <div class="t706__product" data-cart-product-i="1"> <div class="t706__product-thumb"> <div class="t706__product-imgdiv" style="background-image:url(https://static.tildacdn.com/tild6130-6561-4633-a631-306663633061/904117_S.jpg);"> </div> </div> <div class="t706__product-title t-descr t-descr_sm">Elizavecca Milky Piggy Vitamin C 21% Ample Mask<div style="opacity:0.7;font-size:12px;font-weight:400;">904117</div> </div> <div class="t706__product-plusminus t-descr t-descr_sm"><span class="t706__product-minus"><img src="https://static.tildacdn.com/lib/linea/c8eecd27-9482-6c4f-7896-3eb09f6a1091/arrows_circle_minus.svg" style="width:16px;height:16px;border:0;"></span><span class="t706__product-quantity">1</span><span class="t706__product-plus"><img src="https://static.tildacdn.com/lib/linea/c47d1e0c-6880-dc39-ae34-521197f7fba7/arrows_circle_plus.svg" style="width:16px;height:16px;border:0;"></span> </div> <div class="t706__product-amount t-descr t-descr_sm">1 320 р.</div> <div class="t706__product-del"><img src="https://static.tildacdn.com/lib/linea/1bec3cd7-e9d1-2879-5880-19b597ef9f1a/arrows_circle_remove.svg" style="width:20px;height:20px;border:0;"> </div> </div> </div> </body> </html> |
<script> $( document ).ready(function createinput(){ function numberWithCommas(str) { return (+str).toFixed(3).replace(/(\d+)(\.\d+)?/g, function (c, b, a) { return b.replace(/(\d)(?=(\d{3})+$)/g, "$1 ") + a }); } $(".t706__product-amount.t-descr.t-descr_sm").each(function(i, el) { var num = (el.textContent.replace(/[^0-9.]/g, "") || 0) * 0.8; var txt = numberWithCommas(num); $(el).after(`<div class="t706__product-amount-sale">${txt} р.</div>`) }) }); //При открытии корзины запускаем функцию $( "[href = #order], .t706__carticon-wrapper").click(function() {createinput();}); </script> Я запускаю через открытие корзины в окне. Может тут допустил ошибку... |
svileff,
<script> $(function() { $("[href = '#order'], .t706__carticon-wrapper").click(function() { function numberWithCommas(str) { return (+str).toFixed(0).replace(/(\d+)(\.\d+)?/g, function(c, b, a) { return b.replace(/(\d)(?=(\d{3})+$)/g, "$1 ") + (a || "") }) } $(".t706__product-amount.t-descr.t-descr_sm").each(function(i, el) { var num = (el.textContent.replace(/[^0-9.]/g, "") || 0) * .8; var txt = numberWithCommas(num); $(el).after('<div class="t706__product-amount-sale">' + txt + " \u0440.</div>") }) }) }); </script> |
Странно сделал как написали вообще все пропало
https://lowo.store/all |
svileff,
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> это грузить не надо, у вас уже есть jquery |
Скидка так и не появляется
|
svileff,
на момент клика корзины не существует, она либо формируется, либо грузится с сервера, надо ставить дополнение в функцию формирования корзины. можно конечно через таймер, но это очень плохой вариант. $(function() { $("[href = '#order'], .t706__carticon-wrapper").click(function() { window.setTimeout(function() { function numberWithCommas(str) { return (+str).toFixed(0).replace(/(\d+)(\.\d+)?/g, function(c, b, a) { return b.replace(/(\d)(?=(\d{3})+$)/g, "$1 ") + (a || "") }) } $(".t706__product-amount.t-descr.t-descr_sm").each(function(i, el) { var nextLength = $(el).next(".t706__product-amount-sale").length; if (nextLength) return; var num = (el.textContent.replace(/[^0-9.]/g, "") || 0) * .8; var txt = numberWithCommas(num); $(el).after('<div class="t706__product-amount-sale">' + txt + " \u0440.</div>") }) }, 1500) }) }); |
Да так все срабатывает... Но небольшая задержка происходит. И еще как можно ограничить скидку что бы она начинала появляться когда общая сумма достигнет 3000 руб.
|
Цитата:
Цитата:
Цитата:
Цитата:
смотрите общую сумму и делай условие в строке 9 if(сумма > 3000) $(".t706__product-amount.t-descr.t-descr_sm").each(function(i, el) { |
$(".t706__cartwin-prodamount").bind( 'DOMSubtreeModified',function() { var firsttime = true; var productsum = window.tcart.prodamount; num++; if( (num == 2 || firsttime ) && (productsum > 3000) ) $(".t706__product-amount.t-descr.t-descr_sm").each(function(i, el) { Что то типа такого? |
Цитата:
|
Кстати когда миняеш значение товара цена миняется а скидка нет... Как это можно подправить.
|
svileff,
var nextLength = $(el).next(".t706__product-amount-sale").length; if (nextLength) return; заменить на $(el).next(".t706__product-amount-sale").remove() |
Заменил не меняется
|
Цитата:
|
Когда в корзине меняю количество товара например 2шт., цена указывается за 2 товара. А скидка показывает за 1шт.
|
svileff,
не особо понимаю, возможно вы хотите так $(function() { $("[href = '#order'], .t706__carticon-wrapper").click(function() { window.setTimeout(function() { function numberWithCommas(str) { return (+str).toFixed(0).replace(/(\d+)(\.\d+)?/g, function(c, b, a) { return b.replace(/(\d)(?=(\d{3})+$)/g, "$1 ") + (a || "") }) } $(".t706__product-amount.t-descr.t-descr_sm").each(function(i, el) { var num = (el.textContent.replace(/[^0-9.]/g, "") || 0) * .8; var quantity = $(el).prev().find(".t706__product-quantity").text() || 1; var txt = numberWithCommas(num * quantity); $(el).after('<div class="t706__product-amount-sale">' + txt + " \u0440.</div>") }) }, 1500) }) }); далее сами ... |
Понятно спасибо!!!
|
Я почти дописал весь скрипт. Но есть небольшие недочеты. Помогите пожалуйста. Не могу решить некоторые проблемы...
<script> $( document ).ready(function() { var num = 0; var firsttime = true; //Следим за изменением суммы товаров $(".t706__cartwin-prodamount").bind( 'DOMSubtreeModified',function() { //Получаем сумму товара var productsum = window.tcart.prodamount; num++; //Если сумма товара от 1000 до 5000, то промо код выдаёт if ( ( productsum > 1000) && ( productsum < 5000) ){ $('.t-inputpromocode__wrapper').removeClass("promo-kod"); } else { $('.t-inputpromocode__wrapper').addClass("promo-kod"); }; //Если сумма товара больше 7000, то выдаём скидку if ( (num == 2 || firsttime ) && (productsum > 7000) ){ function numberWithCommas(str) { return (+str).toFixed(0).replace(/(\d+)(\.\d+)?/g, function(c, b, a) { return b.replace(/(\d)(?=(\d{3})+$)/g, "$1 ") + (a || "") }) } // Добавляем скидку к каждому товару $(".t706__product-amount.t-descr.t-descr_sm").each(function(i, el) { $(el).next(".t706__product-amount-sale").remove(); var nums = (el.textContent.replace(/[^0-9.]/g, "") || 0) * .85; var txt = numberWithCommas(nums); $(el).after('<div class="t706__product-amount-sale t-descr t-descr_sm">' + txt + " \u0440.</div>"); $(".t706__product-amount.t-descr.t-descr_sm").addClass("sum"); }) //Получаем итоговую сумму var allsum = window.tcart.amount; //Вычитаем 15% от суммы товаров var mydisc = productsum*0.15; //Корректируем итог на скидку товара window.tcart.amount = allsum - mydisc; var prodsumWdisc = productsum - mydisc; var prodamoun = numberWithCommas(window.tcart.amount); //Выводим надпись итоговой суммы в корзину $(".t706__cartwin-prodamount").html(prodamoun + ' р.'); //Выводим надпись итоговой суммы в корзину $(".t706__cartwin-totalamount").html(window.tcart.amount); window.tcart.prodamount = window.tcart.prodamount + ' р;<br> Скидка составила: ' + mydisc + ' р;<br> Сумма товара с учётом скидки: ' + prodsumWdisc; //Создаём надпись для скрытых полей $("[name='yourdiscount']").val(mydisc); $("[name='minusdiscount']").val(prodsumWdisc); num=0; firsttime = false; }; if ( num >= 2 ){ num = 0};}); }); </script> 1. Когда достигаю суммы 7000 выводит скидку, а когда уменьшаю сумму скидка остается. 2. В самой корзине нажимая на + - изменяется цена, а скидка изменяется но не вся. Первые 3 ряда не меняются. Не могу найти причину. То что получилось https://lowo.store/all |
Все сам решил, все спасибо.
|
Часовой пояс GMT +3, время: 14:49. |