在javascript中将字符串转换为int的错误

时间:2012-07-20 12:51:16

标签: javascript substring

我正在尝试将数字字符串转换为数字,然后我想增加(或减少)其值,最后应将其写回原始位置(在一个范围内)。但是当我尝试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

2 个答案:

答案 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);