valor sirve que parse para obtener numerico number isnan funcion cual javascript random numbers setinterval percentage

sirve - isNaN() javascript, número con 2 comas



parsefloat javascript (2)

Estoy trabajando con el porcentaje y el setInterval() así que tengo un

var intervalId; function randomize(){ var prc = $("#prc").val(); var c = 0 ; if (!intervalId){ intervalId = setInterval(function(){ c = c + 1; var attempt = Math.random() * 100; if (attempt <= prc){ clearInterval(intervalId); intervalId = false; $("#attemptnbr").val(c); } }, 100); } }

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> Percentage : <input type="text" id="prc"/> <button onclick="randomize()">GO</button> Number of attempts :<input type="text" id="attemptnbr"/>

Pero en realidad si el usuario establece la entrada de 50.345.34 a 50.345.34 , la condición de attempt <= prc siempre devuelve true . Traté de console.log(isNaN(prc)) cuando esta entrada se establece en un número como 50.345.34 y siempre devuelve false .

¿Por qué se considera como un valor numérico?


Pero en realidad si el usuario establece la entrada de #prc a 50.345.34, la condición de intento <= prc siempre devuelve verdadero.

Estoy bastante seguro de que es un error de observación. Su prc es una cadena, que el operador <= convertirá implícitamente en un número. El número será NaN porque "50.345.34" no se puede convertir implícitamente, y las relaciones que usan NaN nunca son verdaderas.

Sin embargo, realmente no cambia lo que quiere hacer al respecto, que es convertir prc a un número a propósito y probar el resultado:

var intervalId; function randomize(){ var prc = +$("#prc").val(); // ^------------------- Note the +, that converts it to a number if (isNaN(prc)) { // Handle the invalid input return; } var c = 0 ; if (!intervalId){ intervalId = setInterval(function(){ c = c + 1; var attempt = Math.random() * 100; if (attempt <= prc){ clearInterval(intervalId); intervalId = false; console.log(attempt); } }, 100); } }

Debo señalar que lo anterior puede hacer algo que no desees si la entrada está vacía : usará el valor 0 , porque +"" es 0 . Si no quieres eso, puedes hacer esto:

var prcString = $.trim($("#prc").val()); var prc = +prcString; if (!prcString) { // Handle the fact they didn''t enter anything return; } if (isNaN(prc)) { // Handle the invalid input return; }


Porque $("#prc").val() devuelve una cadena. 50.345.34 es una cadena. Cuando compare cadena y número, js comparará la longitud de la cadena y el valor numérico.