使用jsonData与count变量拼接时出现NaN值问题
解决JavaScript拼接时返回NaN的问题
嘿,我一眼就看出问题出在哪了!你遇到的NaN是因为JavaScript把jsondatareg.recibido和i当成数值在做加法,而不是字符串拼接。
问题根源
当你写jsondatareg.recibido+i的时候,如果jsondatareg.recibido是从JSON解析出来的数值类型,或者循环变量i本身是数字,JavaScript的+运算符会优先执行数值加法逻辑。如果其中一个值无法被转换为有效的数字,最终就会返回NaN。
两种修复方案
方案1:强制触发字符串拼接
你可以通过添加空字符串的方式,把数值强制转为字符串,记得给属性访问加括号避免优先级问题:
$('#recibido'+i).html( (jsondatareg.recibido) + '' + i ); console.log( (jsondatareg.recibido) + '' + i );
方案2:用ES6模板字面量(更简洁优雅)
模板字面量用反引号`包裹,变量通过${}嵌入,会自动处理字符串拼接,可读性拉满:
$('#recibido'+i).html( `${jsondatareg.recibido}${i}` ); console.log( `${jsondatareg.recibido}${i}` );
修改后的完整代码
这里是替换后的完整代码示例:
var params = '&cedula='+cedula; $.post('classes/recibirDatos', params, function(jsondatareg){ for(var i = 0; i < jsondatareg.contador; i++){ // 用模板字面量实现字符串拼接 $('#recibido'+i).html( `${jsondatareg.recibido}${i}` ); console.log( `${jsondatareg.recibido}${i}` ); } },'json');
这样就能确保两个值被当作字符串拼接,而不是数值运算,NaN的问题就解决啦!
内容的提问来源于stack exchange,提问作者Juan Molina
相关产品推荐
相关产品推荐

