Estoy usando Oracle Apex versión 20.1 y no puedo superar este extraño error de JavaScript. Tengo una acción dinámica que llena un elemento de página (P616_FRM_AMT2) basado en getValue() de otro elemento de página (P616_TO_AMT1) con una pequeña adición dentro de la función setValue(). El resultado que estoy tratando de lograr en este ejemplo es 10.01. El problema en el código se explica por sí mismo, ¿alguien puede explicar cómo es esto posible?
// Get value of first page item to_amt = apex.item( "P616_TO_AMT1" ).getValue(); // returns 10 // Examples of using arithmetic in the .setValue() working correctly apex.item("P616_FRM_AMT2").setValue(to_amt/10); // returns 1 apex.item("P616_FRM_AMT2").setValue(to_amt*10); // returns 100 apex.item("P616_FRM_AMT2").setValue(to_amt-1); // returns 9 apex.item("P616_FRM_AMT2").setValue(to_amt-1.01); // returns 8.99 // Using addition in the .setValue() apex.item("P616_FRM_AMT2").setValue(to_amt+1); // returns 101 // What I actually need to do apex.item("P616_FRM_AMT2").setValue(to_amt+.01); //returns 100.01 // Had to add this edit because it changes my question, addition works with ONLY static values? apex.item("P616_FRM_AMT2").setValue(10+.01); //returns 10.01Primero verifique qué devuelve realmente getValue():
Parece que la variable javascript es una cadena
Ahora saque el vértice de la ecuación y verifique qué hace javascript con los números frente a las cadenas cuando se hace "+.01".
Ahí lo tienes, así es como lo maneja javascript. Está confiando en la conversión implícita en javascript, suponiendo que lo manejará correctamente. Creo que encontrará la respuesta en los foros de javascript si realmente quiere saber por qué ocurre este comportamiento exacto. O simplemente haga la conversión usted mismo para evitar confusiones...