Extra Block Types (EBT) - New Layout Builder experience❗

Extra Block Types (EBT) - styled, customizable block types: Slideshows, Tabs, Cards, Accordions and many others. Built-in settings for background, DOM Box, javascript plugins. Experience the future of layout building today.

Demo EBT modules Download EBT modules

❗Extra Paragraph Types (EPT) - New Paragraphs experience

Extra Paragraph Types (EPT) - analogical paragraph based set of modules.

Demo EPT modules Download EPT modules

Scroll

Онлайн калькулятор

Онлайн калькулятор
, by

 

Здравствуйте, при создании калькулятора, столкнулся с проблемой в формуле. Мне необходимо, что бы считалось вот так:

файл script.js

 

price = (typ*L+L+B)*H;

если в цифрах то это так: price = (0,5*4+4+6)*2,4; ответ выдает 20

 

но действие typ*L не выполняется, как я понимаю повторно один и тот же параметр не берется?

 

 

1 answer
votes: 800
Answer

Можно весь код файла script.js.

Если вы используете val(), тогда переменные нужно еще обработать parseInt(), если значения дробные, тогда нужно обрабатывать функцией parseFloat().

 


//Онлайн калькулятор
(function ($){
$(document).ready(function() {
  var typ, L, B, H, price;
  $('<div class="price"></div>').insertBefore($('#edit-actions'));
  function changePrice(){
  typ = $('#webform-component-typ input:checked').val();
  L = $('#webform-component-L input:checked').val();
  B = $('#webform-component-B input:checked').val();
  H = $('#webform-component-H input:checked').val();
  if(typ&&L&&B&&H){
  typ = parseInt(typ);
  L = parseInt(L);
  B = parseInt(B);
  H = parseInt(H);
  price = (typ*L+L+B)*H;
  price = Math.round(price);
  $('.price').html('<p> Стоимость сруба:<strong>' + price + 'руб.</strong></p>');
 
   }
  }
 $('#webform-client-form-13 #edit-submitted-typ,#webform-client-form-13 .webform-component-radios input').bind('click change', function(){
  changePrice();
 });
});


})(jQuery);


Странно, конечно, но попробуйте отдельную переменную ввесли для вычисления typ*L.


спасибо, проблема была в функции поставил parseFloat() и все заработало.