计算输出 NaN 在网站上,在 jsFiddle 中工作



我正在尝试计算页面上两美元价值的百分比。我已经让代码在 jsFiddle 中工作,但是每当我尝试在我的网站上实现它时,代码都会输出 NaN,所以我知道我将美元金额转换为我可以处理的数字的努力一定存在一些问题。我不相信我的脚本冲突,因为我在控制台中没有收到任何错误。

http://jsfiddle.net/f9rGj/

我用红色突出显示了我试图计算的两个数字。

var price1 = $('.Value em.ProductPrice strike').text();
var price2 = $('.YouSave .YouSaveAmount').text();
var number1 = Number(price1.replace(/[^0-9.]+/g,""));
var number2 = Number(price2.replace(/[^0-9.]+/g,""));
var savings = (Math.floor((number2 / number1) * 100));
$('#savepercent').text(savings);

有没有人知道为什么这会吐出 NaN?也许我需要尝试以其他方式转换美元金额?

多亏了我收到的反馈,我才能在我的网站上工作。

工作代码:

var price1 = $('.Value em.ProductPrice strike').text();
var price2 = $('.YouSave .YouSaveAmount').text();

var number1 = parseInt(price1.replace(/[^d.]/g, ''));
var number2 = parseInt(price2.replace(/[^d.]/g, ''));
var savings = (Math.floor((number2 / number1) * 100));
$('#savepercent').text(savings);

使用正确的字符串到数字转换函数:

Number.parseFloat()

Number.parseFloat() 方法解析一个字符串参数并返回 浮点数。此方法的行为与全局相同 函数 parseFloat 并且是 ECMAScript 6 的一部分(它的目的是 全局变量的模块化)。

Number.parseInt()

Number.parseInt() 方法解析字符串参数并返回一个 指定基数或基数的整数。此方法的行为相同 到全局函数 parseInt 并且是 ECMAScript 6 的一部分(它是 目的是全局变量的模块化)。

了解您的正则表达式

你应该使用D这意味着Any non-digit而不是尝试自己做。

[^D.,]将匹配任何非数字以及在美国境外用作分隔符而不是,.,。请参阅此链接。

最新更新