获取游戏金币Cookie时parseInt返回NaN问题求助
嘿,我来帮你搞定这个问题!从你描述的情况和给出的代码片段来看,核心问题大概率出在getCookie函数不完整,导致它没有正确返回Cookie的数值内容,进而让parseInt转出来NaN。下面一步步给你排查和解决:
1. 补全你的getCookie函数
你提供的代码里return c.substring...是不完整的,正确的写法应该截取掉Cookie名(比如gold=)之后的部分,也就是实际的数值内容。完整的函数应该是这样:
function getCookie(cname) { var name = cname + "="; var decodedCookie = decodeURIComponent(document.cookie); var ca = decodedCookie.split(';'); for(var i = 0; i < ca.length; i++) { var c = ca[i]; // 去掉Cookie项开头的空格 while(c.charAt(0) == ' ') { c = c.substring(1); } // 找到匹配的Cookie项后,返回纯值部分 if(c.indexOf(name) == 0) { return c.substring(name.length); } } // 如果没找到对应Cookie,返回空字符串 return ""; }
2. 验证Cookie获取结果
先调用函数看看返回的内容是不是预期的"7238":
console.log(getCookie('gold'));
如果输出是"7238",那说明获取没问题;如果输出是"gold=7238"或者空字符串,那就是函数没写对,或者你调用时传的Cookie名大小写不对(比如传了'Gold'而不是'gold')。
3. 安全地转换为数字
就算获取到了正确的字符串,转换时也建议加上十进制基数(10),同时可以用trim()去掉可能的隐藏空格,避免意外:
const goldValueStr = getCookie('gold').trim(); const goldValue = parseInt(goldValueStr, 10); console.log(goldValue); // 这时候应该输出7238,而不是NaN
额外排查点
如果还是有问题,检查一下浏览器的Cookie存储:
- 确认「gold」Cookie确实存在,值是纯数字
7238,没有额外的符号或空格 - 确认没有其他同名但大小写不同的Cookie干扰(比如
Gold)
内容的提问来源于stack exchange,提问作者user9500221
相关产品推荐
相关产品推荐

