parseInt
does not guarantee that the value is actually a number, it just converts the type.
See what you said:
I have tested, and returns the number: console.log ("Irem1:" + i_rem); Printing
in the console: Irem1: "3"
Note that the value received is a number in double quotation marks: "3"
.
In this, the quotation marks invalidate the number, making it NaN
.
Even a letter within a parseInt
returns type number
, see:
var numero = parseInt("a");
console.log(numero);
console.log(typeof(numero));
It seems that the array generated by code arrayCods = lista.split(",");
is returning values with double quotation marks, and therefore it generates NaN.
The solution is to remove the quotation marks with .replace
:
// remove todas as aspas duplas
i_rem = arrayCods[i_rem].replace(/"/g,'');
Example:
lista = '"1", "2", "3"';
arrayCods = lista.split(",");
//var arrayCods = ["1","2","3"];
var i_rem = document.getElementById('listaUsuarios').value;
//Até aqui tudo bem, a i_rem contém um valor numérico extraído do html.
i_rem = arrayCods[i_rem].replace(/"/g,'');
console.log("Irem1: " +i_rem); //IMPRIME CORRETAMENTE O NÚMERO CONTIDO NA STRING
console.log(typeof(i_rem)); // TUDO CERTO AQUI. I_REM É UMA STRING
var numero = parseInt(i_rem);
console.log(numero); // AQUI RETORNA NAN
console.log(typeof(numero)); // MAS ISSO RETORNA CORRETAMENTE DIZENDO QUE O TIPO DA VARIÁVEL NUMER É NUMBER. SE É NUMBER, COMO AO IMPRIMI-LO TENHO UM NAN??
<input type="text" id="listaUsuarios" value="2">
Alternative to replace:
You can also use .match
to get only the string number:
i_rem = arrayCods[i_rem].match(/\d+/)[0];
Example:
lista = '"1", "2", "3"';
arrayCods = lista.split(",");
//var arrayCods = ["1","2","3"];
var i_rem = document.getElementById('listaUsuarios').value;
//Até aqui tudo bem, a i_rem contém um valor numérico extraído do html.
i_rem = arrayCods[i_rem].match(/\d+/)[0];
console.log("Irem1: " +i_rem); //IMPRIME CORRETAMENTE O NÚMERO CONTIDO NA STRING
console.log(typeof(i_rem)); // TUDO CERTO AQUI. I_REM É UMA STRING
var numero = parseInt(i_rem);
console.log(numero); // AQUI RETORNA NAN
console.log(typeof(numero)); // MAS ISSO RETORNA CORRETAMENTE DIZENDO QUE O TIPO DA VARIÁVEL NUMER É NUMBER. SE É NUMBER, COMO AO IMPRIMI-LO TENHO UM NAN??
<input type="text" id="listaUsuarios" value="2">