Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

243
Vistas
How to write a formula in javascript based on input ids and calculate it?

I have a simple form in javascript. I'm going to calculate a formula.

I want to select elements by id and then detects operators and finally calculate final result.

<p>
  V1: <input id="v1" />
</p>
<p>
  V2: <input id="v2" />
</p>
<p>
  V3: <input id="v3" />
</p>
<p>
  V4: <input id="v4" />
</p>
<p>
  Fromula: <input id="f1" />
</p>
<p>
  <button id="doAction">
    Calculate
  </button>
</p>

Example expression is: (v1+v2)*v3-(v4-v1)/v2

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

You can use eval and automatic mapping by ids (no need to call getElementById) to have that implementation

doAction.addEventListener("click", () => {

  const formula = f1.value
    .replaceAll("v1", v1.value || 0)
    .replaceAll("v2", v2.value || 0)
    .replaceAll("v3", v3.value || 0)
    .replaceAll("v4", v4.value || 0)
  result.innerHTML = eval(formula)
})
<p>
  V1: <input id="v1" />
</p>
<p>
  V2: <input id="v2" />
</p>
<p>
  V3: <input id="v3" />
</p>
<p>
  V4: <input id="v4" />
</p>
<p>
  Formula: <input id="f1" />
</p>
<p id="result">

</p>
<p>
  <button id="doAction">
    Calculate
  </button>
</p>

But one thing you need to be aware of, eval is not safe 100%, if you don't protect your code properly, somebody may inject malicious scripts. Here is the sample case

eval("alert('Not safe')")

If you want to have a safer way, you need to have a function to convert strings to operators with numbers like this

about 4 years ago · Juan Pablo Isaza Denunciar

0

Finally I found this solution:

var doAction = document.getElementById('doAction');

doAction.addEventListener('click', (s, e) => {  
  var scope=expressionArray("(v1+v2)*v3-v4");
  var formula = document.getElementById('f1').value;
  const result = math.evaluate(formula, scope)
  console.log(result);
});
function expressionArray(init)
{
    var text="";
  var split_var = init.split(/[*-/+()]+/);
  var obj={};
  split_var.forEach((s,e)=>{    
    if(document.getElementById(s))
    {
        obj[s]=document.getElementById(s).value;
    }    
  });
  return obj;
}

https://jsfiddle.net/bshafiei/zyv7bsfd/51/

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda