我正在尝试将数字字符串转换为数字,然后我想增加(或减少)其值,最后应将其写回原始位置(在一个范围内)。但是当我尝试parseInt时,我总是得到NaN:
var like_value = "0";
if (navigator.userAgent.indexOf("Firefox") != -1)//firefox
like_value = document.getElementById('mySpan').innerHTML;
else
like_value = document.getElementById('mySpan').innerText;
like_value = like_value.substring(1, like_value.length - 1);
var real_number = parseInt(like_value, 10);
real_number++;
alert(real_number);//it displays NaN !!!
if (navigator.userAgent.indexOf("Firefox") != -1)//firefox
document.getElementById('mySpan').innerHTML = real_number;
else
like_value = document.getElementById('mySpan').innerText = real_number;
我认为我的子串中应该存在问题,当然我得到了我的期望,但也许它无法正确转换为int
答案 0 :(得分:1)
尝试打印出你的like_value。如果字符串无法转换为数字,则返回NaN,因此字符串
会出错答案 1 :(得分:0)
如果您在子字符串操作之前有" (11)"
,那么在删除第一个和最后一个字母后,您有"(11"
。
这解析为NaN。
问题是,在你的字符串周围有空格或换行的原因很多。
我建议像这样清理你的字符串:
var like_value = document.getElementById('mySpan').innerHTML;
like_value = like_value.replace(/[\n\r\t\(\)]/g,); // this also remove the parenthesis
var real_number = parseInt(like_value, 10);