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

时间:2014-01-20 17:20:54

标签: javascript math nan

我正在尝试计算页面上两个美元值的百分比。我已经在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);

1 个答案:

答案 0 :(得分:0)

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

Number.parseFloat()

  

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

Number.parseInt()

  

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

了解您的RegEx

您应该使用\D,这意味着Any non-digit而不是自己尝试。{/ p>

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