He escrito una función de JavaScript que toma una matriz de números, realiza algunas matemáticas simples y devuelve una oración con el resultado. Me gustaría que esta función se ejecute utilizando valores de entrada de usuario en la página html.

La forma en que lo hago es creando una matriz a partir del documento.ElementbyId ("suchandsuch"). Valores, y luego pasando esa matriz como los parámetros para la función. Sin embargo, cuando abro mi html y los números de entrada, luego presiono el botón 'Calcular "(que está configurado para ejecutar la función JS usando onclick" "), devuelve el literal de plantilla en blanco de la función JS." Bla, bla, ___, bla, bla 0. "Cuando ejecuto el Javascript por sí solo, funciona bien, así que estoy convencido de que el problema no es mi función, es solo que la función no recibe los valores de entrada del usuario. ¿Hace clic en mi botón?" - "¿necesita incluir algún tipo de confirmación / envío antes de que los valores puedan pasarse a la función? ¿O mi matriz no se creó correctamente?

Intenté cambiar el nombre de todas mis variables / identificadores a diferentes variaciones en segundos, minutos, días, (se, mi, da), etc., porque la única razón por la que podía pensar era que estaban predefinidos en alguna parte. Tengo la sensación de que solo hay algún elemento de validación de la entrada del usuario del que no estoy al tanto: sé js pero realmente no estoy familiarizado con html. He intentado un montón de diferentes permutaciones de onclick "myFunction" y los valores simplemente no parecen haber pasado.

var seconds = document.getElementById("se").value;
var Minutes = document.getElementById("mi").value;
var Hours = document.getElementById("ho").value;
var Weeks = document.getElementById("we").value;
var Days = document.getElementById("da").value;
var Months = document.getElementById("mo").value;

var newActivity = document.getElementById("activity").value;
var idArray = [seconds, Minutes, Hours, Weeks, Days, Months];

function bezosEarnings(s = 0, m = 0, h = 0, d = 0, w = 0, mo = 0) {
  var a = 1 * s;
  var b = 60 * m;
  var c = 3600 * h;
  var d = 86400 * d;
  var e = 604800 * w;
  var f = 2419300 * mo;
  var total = (a + b + c + d + e + f) * 2489;
  return total.toLocaleString();
}
var bezosResult = bezosEarnings(...idArray);
var returnSentence = `While you were ${newActivity}, Jeff Bezos made $ ${bezosResult}`;

function calcuLatte() {
  console.log(returnSentence);
}
What did you do today?
<input type="string" id="activity" placeholder="Phrased as a gerund!`" /> Seconds:
<input type="number" id="se" /> Minutes:
<input type="number" id="mi" /> Hours:
<input type="number" id="ho" /> Days:
<input type="number" id="da" /> Weeks:
<input type="number" id="we" /> Months:
<input type="number" id="mo" />
<button onclick="calcuLatte()">Calculate</button>

Estoy esperando // "Mientras bostezaba, Jeff Bezos ganó $ 7486". Lo que regresa es // "Mientras estabas, Jeff Bezos ganó $

-1
Jensen Oness 16 oct. 2019 a las 09:48

3 respuestas

La mejor respuesta

Esto se debe a que obtiene los valores de entrada en carga de la página . Debería obtener los valores después de completar las entradas y hacer clic en calcular .

Espero que esto ayude.

function bezosEarnings() {

  var seconds = document.getElementById("se").value;
  var Minutes = document.getElementById("mi").value;
  var Hours = document.getElementById("ho").value;
  var Weeks = document.getElementById("we").value;
  var Days = document.getElementById("da").value;
  var Months = document.getElementById("mo").value;

  var newActivity = document.getElementById("activity").value;

  var a = 1 * seconds;
  var b = 60 * Minutes;
  var c = 3600 * Hours;
  var d = 86400 * Days;
  var e = 604800 * Weeks;
  var f = 2419300 * Months;
  var total = (a + b + c + d + e + f) * 2489;
  
  return `While you were ${newActivity}, Jeff Bezos made $ ${total.toLocaleString()}`;
}


function calcuLatte() {
  console.log(bezosEarnings());
}
What did you do today?
<input type="string" id="activity" placeholder="Phrased as a gerund!`" /> Seconds:
<input type="number" id="se" /> Minutes:
<input type="number" id="mi" /> Hours:
<input type="number" id="ho" /> Days:
<input type="number" id="da" /> Weeks:
<input type="number" id="we" /> Months:
<input type="number" id="mo" />
<button onclick="calcuLatte()">Calculate</button>
0
Harun Yilmaz 16 oct. 2019 a las 06:54

Tu document.getElementById("yourId").value te devolverá un string. Deberá convertirlo a number. Tratar

parseInt(document.getElementById("yourId").value)
0
Tera Mind 16 oct. 2019 a las 06:52

Intenta algo como esto. Debe actualizar las variables porque cuando declara variables fuera del método tendrán el mismo valor que tenían antes.

function bezosEarnings(s = 0, m = 0, h = 0, d = 0, w = 0, mo = 0) {
  var a = 1 * s;
  var b = 60 * m;
  var c = 3600 * h;
  var d = 86400 * d;
  var e = 604800 * w;
  var f = 2419300 * mo;
  var total = (a + b + c + d + e + f) * 2489;
  return total.toLocaleString();
}

function calcuLatte() {

var seconds = document.getElementById("se").value;
var Minutes = document.getElementById("mi").value;
var Hours = document.getElementById("ho").value;
var Weeks = document.getElementById("we").value;
var Days = document.getElementById("da").value;
var Months = document.getElementById("mo").value;

var newActivity = document.getElementById("activity").value;
var idArray = [seconds, Minutes, Hours, Weeks, Days, Months];

var bezosResult = bezosEarnings(...idArray);
var returnSentence = `While you were ${newActivity}, Jeff Bezos made $ ${bezosResult}`;

  console.log(returnSentence);
}
1
Giorgi 16 oct. 2019 a las 07:00