使用jQuery对PHP格式化的千分位数字加1显示异常如何修复
问题根因
parseInt()解析带千位分隔符,的字符串时,会在遇到第一个非数字字符(即逗号)时直接截断解析,因此parseInt("8,500")实际得到的结果是8,加1后自然就显示为9。
修正代码
你需要先把拿到的数值文本里的逗号全部清除再转整数,加1后再重新格式化为带千位分隔符的字符串再更新到页面上,修正后的逻辑如下:
// 用text()拿纯文本,替换所有逗号后再转整数 const currentShares = parseInt($('.totalShares').text().replace(/,/g, '')); const updatedShares = currentShares + 1; // 用原生toLocaleString方法格式化千位分隔符 $('.totalShares').html(updatedShares.toLocaleString('en-US'));
额外优化建议
建议把数值更新的逻辑放到AJAX的success回调里执行,避免出现AJAX请求失败、后端没有实际累加数值,但前端已经更新显示的不一致问题,调整后的完整代码如下:
jQuery(function($) { $('.social-icon').on('click', function() { $.ajax({ url: bloginfo.site_url + '/wp-json/functions/shares/' + bloginfo.post_id.ID, type: 'post', success: function() { console.log('works!'); // 请求成功后再更新前端数值 const currentShares = parseInt($('.totalShares').text().replace(/,/g, '')); const updatedShares = currentShares + 1; $('.totalShares').html(updatedShares.toLocaleString('en-US')); }, error: function() { console.log('failed!'); } }); }); });
内容的提问来源于stack exchange,提问作者Scotty
相关产品推荐
相关产品推荐

