2012-07-20 90 views
0

我试图将数字字符串转换为数字,然后我想增加(或减少)它的值,最后它应该写回到原来的位置(在一个范围内)。但我一直都想与NaN当我尝试parseInt函数:将字符串转换为int的错误

 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

+1

你尝试调试怎么看是你like_value?只需添加'console.log(like_value);'并键入F12以查看控制台。 – 2012-07-20 12:53:15

+0

我使用alert来编写它,它在like_value = like_value.substring(1,like_value.length - 1)中没问题; ,但parseInt后我得到NaN – 2012-07-20 12:54:11

+1

这与您的问题无关,但它是有用的建议;浏览器嗅探是* sooo * 1500的。你应该看看使用***功能检测***来代替(例如document.createElement(“div”)中的'“textContent”'而不是'navigator.userAgent.indexOf(“Firefox”)!= -1' – Matt 2012-07-20 12:55:15

回答

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); 
1

尝试打印出你的like_value是什么。返回NaN如果字符串不能转换为数字,所以有些事情是不对您的字符串