pracuję z procentu i setInterval()
więc mamisNaN() javascript, numer 2 przecinkami
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"/>
Ale faktycznie, jeśli użytkownik ustaw wejście #prc
do 50.345.34
, warunek attempt <= prc
zawsze zwraca true
. Próbowałem console.log(isNaN(prc))
, gdy to wejście jest ustawione na numer taki jak 50.345.34
i zawsze zwraca false
.
Dlaczego jest uważany za wartość liczbową?
Czy ta wartość wejściowa nie jest liczbą, nawet jeśli ''? –
@ TerryRapt: Tak, "wartość" słowa 'input' to * zawsze * ciąg znaków, nawet dla nowych typów danych wejściowych. jQuery 'val' zwróci tylko ciąg znaków (jeśli istnieją jakieś elementy w zestawie jQuery, do którego go wywołasz) lub' undefined' (jeśli zestaw jest całkowicie pusty, ale nie ma to zastosowania w twoim przypadku, zakładam). –
Dzięki za wszystkie te informacje, naprawdę mi pomogło. –