0

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

4

2 回答 2

1

尝试打印出您的 like_value 是什么。如果字符串无法转换为数字,则返回 NaN,因此您的字符串一定有问题

于 2012-07-20T12:54:29.083 回答
1

如果您" (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);
于 2012-07-20T13:00:42.390 回答