JSFiddle - React, Tailwind, and code Playground
HTML
<form id="pizza3">
<p>Tamanho da Pizza:</p>
<select id="tmhpizza">
<option value="{"preco":20,"desc":"R$20,00"}">Brotinho - R$20,00</option>
<option value="{"preco":45,"desc":"R$45,00"}">Pequena - R$45,00</option>
<option value="{"preco":70,"desc":"R$70,00"}">Média - R$70,00</option>
<option value="{"preco":95,"desc":"R$95,00"}">Grande - R$95,00</option>
<option value="{"preco":120,"desc":"R$120,00"}">Gigante - R$120,00</option>
</select>
<p>Quantidade de Pizzas:</p>
<select id="qntpizza" data-rel="tmhpizza">
<option value="0">0</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
</select>
<p>Tamanho do Refrigerante:</p>
<select id="tmhrefri">
<option value="{"preco":4.5,"desc":"R$4,50"}">350ml - R$4,50</option>
<option value="{"preco":6.3,"desc":"R$6,30"}">750ml - R$6,30</option>
<option value="{"preco":8.1,"desc":"R$8,10"}">1L - R$8,10</option>
<option value="{"preco":9.9,"desc":"R$9,90"}">2L - R$9,90</option>
<option value="{"preco":11.7,"desc":"R$11,70"}">2,5L - R$11,70</option>
</select>
<p>Quantidade de Refrigerante:</p>
<select id="qntrefri" data-rel="tmhrefri">
<option...
CSS
div {
padding: .5em;
}
JavaScript
var calcular = document.getElementById('calcular');
calcular.addEventListener('click', function () {
var selects = document.querySelectorAll('select[data-rel]');
var precos = [].map.call(selects, function (select) {
var multiplicador = parseInt(select.value, 10);
var json = document.getElementById(select.dataset.rel).value;
var produto = JSON.parse(json);
return parseFloat(produto.preco) * multiplicador;
});
document.querySelector('input[name="preco"]').value = precos.reduce(function (a, b) {
return a + b;
}, 0);
});