为什么我在Javascript中解析数字时收到NaN

为什么我在Javascript中解析数字时收到NaN,javascript,jquery,html,Javascript,Jquery,Html,我不明白为什么我会收到一个NaN,因为我用javascript打印了一个数字 我使用的以下代码在网站的其他地方重复了一遍,效果很好 该网址为: 我的代码如下: function setCheckPrice() { $('.NormalPrice').each(function(key, val) { var price = $(val).html().replace('$', '').replace(',', ''); var newPrice = parseInt(pric

我不明白为什么我会收到一个
NaN
,因为我用javascript打印了一个数字

我使用的以下代码在网站的其他地方重复了一遍,效果很好

该网址为:

我的代码如下:

    function setCheckPrice() {
  $('.NormalPrice').each(function(key, val) {
  var price = $(val).html().replace('$', '').replace(',', '');
  var newPrice = parseInt(price) * .03;
  var setPrice = Math.floor(price - newPrice);

        var credit = '<small style="font-size: 20px !important;"> - credit card price</small>';
        var check = '<p><em class="new-price">$' + setPrice +'<small style="font-size: 20px !important;"> - check price</small></em></p>';

        $(val).append(credit);

        $(val).prepend(check);



        })

};

setCheckPrice();
函数setCheckPrice(){
$('.NormalPrice')。每个(函数(键,值){
var price=$(val.html().replace(“$”,”).replace(“,”,”);
var newPrice=parseInt(价格)*.03;
var setPrice=数学下限(价格-新价格);
var信用='-信用卡价格';
var检查=“$”+setPrice+”-检查价格

”; 美元(val)。追加(贷方); $(val).前置(检查); }) }; setCheckPrice();

我的代码获取一个由特定类名找到的数字,做一些数学运算,然后返回一些额外的html。我试着用
附加
前置
切换输出代码的方式,但似乎都不起作用?这有什么奇怪的原因吗?

这个
price
变量中有额外的html。您应该考虑将单独的元素与包含您需要的值的类分开,而没有别的。作为快速解决方案,此更改:

var price = $(val).val().replace('$', '').replace(',', '').replace(" ","");

请在该页面上给我一个490的
price
,这就是您要找的。

请用您的标记更新问题too@Pointy那不是真的。如果你传递一个字符串,它会逐字替换子字符串。只需添加
console.log(price)
,看看你真正得到了什么got@Xufox天哪,你是对的;我一定是梦见读到了其他的东西(但似乎是真的!):)是否有前导空格需要删掉?我要寻找的是修改后的价格,它仍然返回一个NaN和您建议的代码。log(price)返回490,这是正确的,但是我试图显示var setPrice的值,这是NaN的来源。因为price中有html标记,所以newPrice和setPrice都是NaN。当前问题的根源是:var price=$(val.html().replace(“$”,”).replace(“,”,”);返回一组无法正确解析为整数的html标记。如果你已经控制了HTML,请考虑清理它。