Посчитать скидку

77
15 марта 2021, 09:50

Есть вот такой код HTML

$('#saleForm input').on('change', function() { 
 let inputVal = $('input[name=radio-sale]:checked').val(); 
 let prices =   $('.priceJs'); 
    $.each(prices,function(index,value){ 
        console.log(value); 
    }); 
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> 
<span class="priceJs">95</span> 
<span class="priceJs">85</span> 
<form id="saleForm"> 
  <div class="sale"> 
      <label> 
          <input  class="sale-btn" type="radio" name="radio-sale" value="15" > 
      При покупке продукции от 750 гривен скида 15% 
      </label> 
  </div> 
  <div class="sale"> 
      <label> 
          <input class="sale-btn" type="radio" name="radio-sale" value="35"> 
      При покупке продукции от 10000 гривен скида 35% 
      </label> 
  </div> 
</form>

В работе будет много <span class="priceJs">--</span> Я получаю при клике на input нужное значение value 15 или 35. И получаю список элементов с классом priceJs. Вопрос такой, как мне взять значение каждого элемента priceJs и вывести туда новые значения с учетом скидки? Когда пытаюсь взять значения value.text() получаю ошибку:

scripts.min.js:75 Uncaught TypeError: value.text is not a function

Answer 1

Если я вас правильно понял.

$('.sale-btn').on('change', function() { 
  let val = this.value; 
  let prices = $('.priceJs'), new_price = 0; 
   
  $.each(prices,function(index,value){ 
    new_price = (+$(value).attr('data-d') * val)/100; 
    $(value).text(new_price); 
  }); 
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> 
<span class="priceJs" data-d="95">95</span> 
<span class="priceJs" data-d="85">85</span> 
<form id="saleForm"> 
  <div class="sale"> 
      <label> 
          <input  class="sale-btn" type="radio" name="radio-sale" value="15" data-span="1"> 
      При покупке продукции от 750 гривен скида 15% 
      </label> 
  </div> 
  <div class="sale"> 
      <label> 
          <input class="sale-btn" type="radio" name="radio-sale" value="35" data-span="2"> 
      При покупке продукции от 10000 гривен скида 35% 
      </label> 
  </div> 
</form>

READ ALSO
Как передать две переменные в css?

Как передать две переменные в css?

У меня идет рандомный генератор чисел (два разных числа передаются в переменную x и у)После чего я их передаю map

100
Как заставить ресурсы кешироваться?

Как заставить ресурсы кешироваться?

Я воспользовался сервисом Google Page Insights для проверки скорости сайта

66
animation: pulse размер блока

animation: pulse размер блока

Всем привет нужно что бы блок плавно увеличивался и уменьшался нашел свойство: animation: animation: pulse 2s infinite; однако рамер блока при увеличении слишмком...

93