¿Por qué mi código no funciona correctamente?

(Lo siento, no soy bueno en inglés para explicar, no es mi culpa)

Html:

<input type="text"  id="euro" /> € = <span id="coins"></span> Miitomo Coins

<button onclick="ok()">Convert</button>

Código JS:

function ok() {
    document.getElementById("coins").innerHTML = a + 100;
}

var a = document.getElementById("euro").value;
0
user5198826 8 may. 2016 a las 10:59

4 respuestas

La mejor respuesta

Dos problemas:

  • Debe definir el campo de entrada y no el valor.
  • Debes usar parseInt()

Código:

var input = document.getElementById("euro");
function ok()
{
    document.getElementById("coins").innerHTML = parseInt(input.value) + 100;
}
1
timmyRS 8 may. 2016 a las 08:01

Debe leer el valor de entrada en la función ok y usar parseInt o parseFloat:

<input type="text"  id="euro" /> € = <span id="coins"></span> Miitomo Coins
<button onclick="ok()">Convert</button>

Javascript:

function ok() {
      var a = parseFloat(document.getElementById("euro").value);
    document.getElementById("coins").innerHTML = a + 100;
}

JsFiddle aquí

0
Jesús López 8 may. 2016 a las 08:08

Primero, tome el valor del campo cuando haga clic en el botón para que tenga el contenido actual:

function ok() {
    var val = document.getElementById( "euro" ).value;
    ...
}

Luego, convierte el valor que tomaste en un número. El contenido en el DOM siempre es una cadena:

function ok() {
    var val = document.getElementById( "euro" ).value;
    var eurosNumber = Number( val );
    ...
}

Tenga en cuenta que estoy usando Number en lugar de parse*.

Supongo que puede escribir un número entero (1, 20, 25, etc.) o un número fraccional (1.50, 10.25, 20.34, etc.) en el campo.

Puede hacer la misma conversión con parseFloat o parseInt pero es más explícito que está convirtiendo [some string] a Number.

Solo ten cuidado: si la cadena no es un número válido, habrá un error (Number( [not a number] ) devolverá NaN).

Finalmente, haz tu adición:

function ok() {
    var val = document.getElementById( "euro" ).value;
    var eurosNumber = Number( val );

    document.getElementById( "coins" ).innerHTML = eurosNumber + 100;
}
1
rockerest 8 may. 2016 a las 08:11
var a = parseInt(document.getElementById("euro").value);

Utilice parseInt()

-1
Şivā SankĂr 8 may. 2016 a las 08:03