Obtenga el valor numérico de la forma, el cálculo y la actualización del contenido html con javascript

Estoy tratando de hacer una calculadora muy simple en HTML y javascript, pero todavía no funciona

Mi pregunta es:
1. ¿Cómo obtengo valor de un formulario y lo fijo como un número, no como una cadena?
2. ¿Cómo realizo el cálculo cuadrático en javascript?
3. ¿Cómo actualizo el contenido html con javascript? Entonces cada vez que cambio el valor del formulario de entrada y presiono enviar, el resultado cambiará en función de la entrada que escriba, he intentado con document.getElementById (“idhere”). InnerHTML = valuehere; pero todavía no funciona.

 function calculateThis(form) { var userweight=form.weight.value; var caffeineamount=form.caffein.value; var caffeinetimes=form.caffeintimes.value; var totalcaffeine=caffeineamount*caffeinetimes; // Calculate max caffeine per person var maxcaffeine=userweight*10; // Calculate remaining after 24 hours // Half life = 6 hours var totalcaffeineafter=totalcaffeine(1/16); // Calculating how many hours until the caffeine completely digested var totaldigest=totalcaffeine; var digesttime=0; while (totaldigest>0.05) { totaldigest=totaldigest(1/2); digesttime++; } digesttime=digesttime*6; // Calculating when the user will probably die of overdose var countcaffeine=0; var overdosetime=1; while (countcaffeine<maxcaffeine){ countcaffeine=countcaffeine+totalcaffeine; overdosetime++; } // Show total amount of caffeine document.getElementById("showtotalkafein").innerHTML=totalcaffeine; // Show amount of caffeine after 1 day document.getElementById("showtotalkafeinsetelah").innerHTML=totalcaffeineafter; // Show digest time document.getElementById("showwaktudigest").innerHTML=digesttime; // Show overdose document.getElementById("showberapakali").innerHTML=overdosetime; return false; }  
Weight

Amount of caffein in coffee

How many times drinking coffee in a day

Result

Show Caffein Total Here

Show Caffeine Amount After 24 hours

Show Digest TIme Here

Show Overdose Time Here

 function calculateThis(form) { var userweight = parseInt(form.weight.value, 10); var caffeineamount = parseInt(form.caffein.value, 10); var caffeinetimes = parseInt(form.caffeintimes.value, 10); var totalcaffeine = caffeineamount * caffeinetimes; console.log(totalcaffeine) // Calculate max caffeine per person var maxcaffeine = userweight * 10; // Calculate remaining after 24 hours // Half life = 6 hours var totalcaffeineafter = totalcaffeine * (1 / 16); // Calculating how many hours until the caffeine completely digested var totaldigest = totalcaffeine; var digesttime = 0; while (totaldigest > 0.05) { totaldigest = totaldigest * (1 / 2); digesttime++; } digesttime = digesttime * 6; // Calculating when the user will probably die of overdose var countcaffeine = 0; var overdosetime = 1; while (countcaffeine < maxcaffeine) { countcaffeine = countcaffeine + totalcaffeine; overdosetime++; } // Show total amount of caffeine document.getElementById("showtotalkafein").innerHTML = totalcaffeine; // Show amount of caffeine after 1 day document.getElementById("showtotalkafeinsetelah").innerHTML = totalcaffeineafter; // Show digest time document.getElementById("showwaktudigest").innerHTML = digesttime; // Show overdose document.getElementById("showberapakali").innerHTML = overdosetime; return false; } 

MANIFESTACIÓN

Nota

Aquí usé .parseInt() que solía convertir un número a entero, si necesita algún valor en Float y luego usa . parseFloat () `.


Problemas en tu código

  • form.weight.value , form.caffein.value ... dar valor como cadena, por lo que debe convertirlos en número (entero / flotante).

  • totalcaffeine(1 / 16) y totaldigest = totaldigest(1 / 2); , no es una operación matemática válida en javascript, debe ser totalcaffeine * (1 / 16) totaldigest = totaldigest * (1 / 2); totalcaffeine * (1 / 16) y totaldigest = totaldigest * (1 / 2);


De acuerdo a tu comentario

¿Qué es lo que .parseInt(form.caffeintimes.value, 10) ?

El formato de parseInt es:

.parseInt(valueToConvert, [radix]) .

Entonces, .parseInt(form.caffeintimes.value, 10) convertirá form.caffeintimes.value string en un entero de 10 bases.


Referencias relacionadas:

.parseInt ()

.parseFloat ()