Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.04.2015, 16:59
Новичок на форуме
Отправить личное сообщение для tatynechka Посмотреть профиль Найти все сообщения от tatynechka
 
Регистрация: 14.04.2015
Сообщений: 7

Расчет стоимости jquery
Здравствуйте. Есть форма заказа. Скрипт для расчета стоимости написан, нужно сделать условие, что при заказе от 100 бутылок скидка составит 15% от общей стоимости.
Код формы:
<div class="col-md-12">
  <table class="table">
    <tbody><tr class="trth">
      <th colspan="2">Наименование</th>
      <th>Цена (руб.)</th>
      <th>Количество</th>
      <th>Стоимость (руб.)</th>
    </tr>
    <tr class="cart_item">
      <td class="product-thumbnail">
         <img class="attachment-small wp-post-image" src="">
      </td>
      <td class="product-name">
          <p class="product-name__text">Бутылка 0,33 л</p>
      </td>
      <td class="product-price">
          <p class="product-price__value">55</p>
      </td>
      <td class="product-quantity">
        <div class="product-quantity__value">
          <input class="product-quantity__input" type="number" step="1" min="0" value="0" title="Qty" size="2">
        </div>
       </td>
       <td class="product-subtotal">
           <p class="product-subtotal__price">0</p>
       </td>
     </tr>
     <tr class="cart_item">
       <td class="product-thumbnail">
           <img class="attachment-small wp-post-image" src="">
       </td>
       <td class="product-name">
           <p class="product-name__text">Бутылка 0,5 л</p>
       </td>
       <td class="product-price">
           <p class="product-price__value">75</p>
       </td>
       <td class="product-quantity">
         <div class="product-quantity__value">
           <input class="product-quantity__input" type="number" step="1" min="0" value="0" title="Qty" size="2">
         </div>
       </td>
       <td class="product-subtotal">
           <p class="product-subtotal__price">0</p>
       </td>
     </tr>
     <tr class="cart_item">
       <td class="product-thumbnail">
           <img class="attachment-small wp-post-image" src="">
       </td>
       <td class="product-name">
           <p class="product-name__text">Бутылка 0,75 л</p>
       </td>
       <td class="product-price">
           <p class="product-price__value">100</p>
       </td>
       <td class="product-quantity">
         <div class="product-quantity__value">
           <input class="product-quantity__input" type="number" step="1" min="0" value="0" title="Qty" size="2">
         </div>
        </td>
        <td class="product-subtotal">
            <p class="product-subtotal__price">0</p>
        </td>
      </tr>
      <tr class="noborder total-info-tr">
        <td colspan="2"></td>
        <td colspan="3">
            <strong>При заказе от 100 бутылок предоставляется скидка 15 % от общей суммы заказа<strong></strong></strong>
        </td>
      </tr>
      <tr class="noborder total-summ-tr">
        <td colspan="4" class="order-amount__first">
            <p>СУММА ЗАКАЗА:</p>
        </td>
        <td class="order-amount__second">
            <p>0</p><span> руб.</span>
        </td>
      </tr>                         
    </tbody>
  </table>
</div>


Скрипт:
function count_totals(){
 
    var total = 0;  // значение общей суммы заказа
 
    var list = "";  // перечень заказанных товаров
 
    var listHidden = "";
    
    var discount = 0.15; //скидка
    
 
    $('.cart_item').each(function(){
 
      var price = $(this).find(".product-price__value").text(); // исходная цена товар 
      var qty = $(this).find(".product-quantity__input").val(); // значение value number
      var title = $(this).find(".product-name__text").text(); // название товара
 
      var summ = price*qty; // значение конечной цены за товар
      
   
      $(this).find(".product-subtotal__price").text(summ);
      
      total+=summ; 
            
      if (summ!=0) {list+= "<li> "+title+" "+qty+ " шт"+" </li> ";}
 
      if (summ!=0) {listHidden+=  "| "+title+" "+qty+ " шт"+" |";}
      if (qty >=100 ){total=total-(total*discount);} //считаем скидку      
 
    });
 
    list = '<ul>' +  list  + '</ul>';
    listHidden =  listHidden + " Общая сумма заказа "+ total+" руб.";
    
    $(".order-amount__second p").text(total); // обновляем общую сумму
    $(".list_products").html(list);// в textarea добавляем
    $("#hidden-info").val(listHidden);
  }
 
  count_totals();
  $("input").on("change",function(){
    count_totals();
  })


Вот, расчет скидки я сделала вот так if (qty >=100 ){total=total-(total*discount);} И это работает если только один вид товара заказать от 100шт., а если товар 1 (50 шт), товар 2 (40шт) и товар 3 (10шт), то не работает. А если товар 1 заказать 100шт, а товар 2 еще 20 шт, то общая сумма считается неправильно, скидка делается от суммы за 100шт, а не от общей. Надеюсь на вашу помощь, а то я уже голову сломала
Ответить с цитированием
  #2 (permalink)  
Старый 14.04.2015, 17:04
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Скидка только на товары количество которых более 100, так? Значит нужно проверять не общую стоимость, а количество каждого из товаров.
Ответить с цитированием
  #3 (permalink)  
Старый 14.04.2015, 17:10
Новичок на форуме
Отправить личное сообщение для tatynechka Посмотреть профиль Найти все сообщения от tatynechka
 
Регистрация: 14.04.2015
Сообщений: 7

Да, скидка на товары, количество которых более 100, т.е. общее количество заказанных товаров более 100.
Ответить с цитированием
  #4 (permalink)  
Старый 14.04.2015, 17:11
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

А если товара А взято 100, и товара Б взято 101, какая будет скидка?
Ответить с цитированием
  #5 (permalink)  
Старый 14.04.2015, 17:13
Новичок на форуме
Отправить личное сообщение для tatynechka Посмотреть профиль Найти все сообщения от tatynechka
 
Регистрация: 14.04.2015
Сообщений: 7

такая же, 15%
Ответить с цитированием
  #6 (permalink)  
Старый 14.04.2015, 17:27
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Значит рассчитывая сумму за товар А_сумма = А_количество * цена, можно устанавливать флаг, а уже при суммировании общей суммы за товары делать скидку только если этот флаг установлен.
Ответить с цитированием
  #7 (permalink)  
Старый 14.04.2015, 17:27
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

tatynechka,
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  .main  {
    display: none;

  }
  .orange {
    background: #FFCC00;
  }
  .orange + div{
    display: block;
  }
  span {
     cursor: pointer;
  }

  </style>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
  <script>
     $(function(){
      function count_totals(){

    var total = 0;  // значение общей суммы заказа

    var list = "";  // перечень заказанных товаров

    var listHidden = "";

    var discount = 0.15; //скидка

    var col = 0;
    $('.cart_item').each(function(){

      var price = $(this).find(".product-price__value").text(); // исходная цена товар
      var qty = $(this).find(".product-quantity__input").val(); // значение value number
      var title = $(this).find(".product-name__text").text(); // название товара

      var summ = price*qty; // значение конечной цены за товар


      $(this).find(".product-subtotal__price").text(summ);

      total+=summ;

      if (summ!=0) {list+= "<li> "+title+" "+qty+ " шт"+" </li> ";}

      if (summ!=0) {listHidden+=  "| "+title+" "+qty+ " шт"+" |";}
      col += +qty

    });
    var sale = '';
   
    if (col >=100 ){
    sale = total*discount ; //считаем скидку
    total=total-sale;}
    list = '<ul>' +  list  + '</ul>';
    listHidden =  listHidden + " Общая сумма заказа "+ total+" руб." ;

    $(".order-amount__second p").text(total+' ' +sale); // обновляем общую сумму
    $(".list_products").html(list);// в textarea добавляем
    $("#hidden-info").val(listHidden);
  }

  count_totals();
  $("input").on("change",function(){
    count_totals();
  })

});


  </script>
</head>

<body>  <div class="col-md-12">
  <table class="table">
    <tbody><tr class="trth">
      <th colspan="2">Наименование</th>
      <th>Цена (руб.)</th>
      <th>Количество</th>
      <th>Стоимость (руб.)</th>
    </tr>
    <tr class="cart_item">
      <td class="product-thumbnail">
         <img class="attachment-small wp-post-image" src="">
      </td>
      <td class="product-name">
          <p class="product-name__text">Бутылка 0,33 л</p>
      </td>
      <td class="product-price">
          <p class="product-price__value">55</p>
      </td>
      <td class="product-quantity">
        <div class="product-quantity__value">
          <input class="product-quantity__input" type="number" step="1" min="0" value="0" title="Qty" size="2">
        </div>
       </td>
       <td class="product-subtotal">
           <p class="product-subtotal__price">0</p>
       </td>
     </tr>
     <tr class="cart_item">
       <td class="product-thumbnail">
           <img class="attachment-small wp-post-image" src="">
       </td>
       <td class="product-name">
           <p class="product-name__text">Бутылка 0,5 л</p>
       </td>
       <td class="product-price">
           <p class="product-price__value">75</p>
       </td>
       <td class="product-quantity">
         <div class="product-quantity__value">
           <input class="product-quantity__input" type="number" step="1" min="0" value="0" title="Qty" size="2">
         </div>
       </td>
       <td class="product-subtotal">
           <p class="product-subtotal__price">0</p>
       </td>
     </tr>
     <tr class="cart_item">
       <td class="product-thumbnail">
           <img class="attachment-small wp-post-image" src="">
       </td>
       <td class="product-name">
           <p class="product-name__text">Бутылка 0,75 л</p>
       </td>
       <td class="product-price">
           <p class="product-price__value">100</p>
       </td>
       <td class="product-quantity">
         <div class="product-quantity__value">
           <input class="product-quantity__input" type="number" step="1" min="0" value="0" title="Qty" size="2">
         </div>
        </td>
        <td class="product-subtotal">
            <p class="product-subtotal__price">0</p>
        </td>
      </tr>
      <tr class="noborder total-info-tr">
        <td colspan="2"></td>
        <td colspan="3">
            <strong>При заказе от 100 бутылок предоставляется скидка 15 % от общей суммы заказа<strong></strong></strong>
        </td>
      </tr>
      <tr class="noborder total-summ-tr">
        <td colspan="4" class="order-amount__first">
            <p>СУММА ЗАКАЗА:</p>
        </td>
        <td class="order-amount__second">
            <p>0</p><span> руб.</span>
        </td>
      </tr>
    </tbody>
  </table>
</div>


</body>

</html>

Последний раз редактировалось рони, 26.02.2022 в 21:51.
Ответить с цитированием
  #8 (permalink)  
Старый 14.04.2015, 17:48
Новичок на форуме
Отправить личное сообщение для tatynechka Посмотреть профиль Найти все сообщения от tatynechka
 
Регистрация: 14.04.2015
Сообщений: 7

огромное спасибо!!! все работает)
Ответить с цитированием
Ответ


Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Расчет стоимости доставки с помощью Google maps API DynkanMaclaud Работа 2 02.02.2015 18:50
Расчет стоимости услуг adoafw Ваши сайты и скрипты 9 17.01.2015 16:02
Динамический подсчет в таблице muraig jQuery 5 11.10.2014 16:54
JS (jQuery) расчет стоимости ! 3loY Работа 4 01.06.2014 23:22
Расчет стоимости потолков калькулятор AlexandrOz Общие вопросы Javascript 2 26.01.2014 21:41