Javascript:关于数学运算符的parseInt问题

时间:2017-11-24 11:24:37

标签: javascript html-parsing

我有这个滑块,可以滑动'从数组中获取定价值(带有欧元符号的字符串),稍后为html输出解析(parseInt)。这很好,在输出上我得到数字加上符号,但是当我需要乘以这些值(将月份定价转换为年度)时,我会松开输出,没有数字或符号。所以我猜parseInt在没有数学运算符的情况下正常工作......?我已经因为类似的问题而被解决了,但我找不到任何解决办法,这让我更加困惑......任何人都能说出我失踪的东西吗?代码:

    var priceStarter = [
      '149€',
      '199€',
      '249€',
      '399€',
      '599€',
      '999€',
     'Contact Us',
    ];


    slider.on('slide', function (values, handle) {
      if(jQuery(this).hasClass('active-anual')){
        //ANUAL
           var anualStarter = priceStarter[parseInt(handle)];
           priceValueStarter.html(anualStarter * 10); //ISSUE HERE

      }
      else {
        //MONTHLY
        priceValueStarter.html(priceStarter[parseInt(handle)]); //WORKS

      }
    });

    //TOGGLE ANUAL/MONTHLY
    anual.on('click',function(){
      jQuery(this).toggleClass('active-tab');
     monthly.removeClass('active-tab');
      slider.addClass('active-anual');
    })
    monthly.on('click', function () {
      jQuery(this).toggleClass('active-tab');
     anual.removeClass('active-tab');
      slider.removeClass('active-anual');
    })
  }

编辑:

console.log(anualStarter)为我提供了正确的值,但console.log(anualStarter*10)给了我NaN

编辑:根据康斯坦纳的答案,我得到了数字,但我仍然松开欧元符号,并在使用运营商时联系我们

 slider.on('slide', function (values, handle) {
  if (jQuery(this).hasClass('active-anual')) {
    //ANUAL
    var anualStarter = priceStarter[parseInt(handle)];
    priceValueStarter.html(parseInt(anualStarter )*10);


  } else {
    //MONTHLY
    priceValueStarter.html(priceStarter[parseInt(handle)]);    
  }   
})

1 个答案:

答案 0 :(得分:1)

您的priceStarter[parseInt(handle)]是一个类似"249€"的字符串。因此,您无法使用anualStarter * 10"249€" * 10) - 它是NaN。请尝试使用parseInt(anualStarter) * 10

一点解释。当您尝试使用"249€" * 10时,JavaScript引擎会尝试将字符串“249€”转换为数字,并且不会将其解释为整数或其他内容。因此,"249€" * 10Number("249€") * 10相同,Number("249€")NaN

我想您打算编写如下代码:

slider.on('slide', function (values, handle) {
    if(jQuery(this).hasClass('active-anual')){
      //ANUAL
         var anualStarter = priceStarter[parseInt(handle)];
         priceValueStarter.html(isNaN(parseInt(anualStarter)) ? anualStarter : parseInt(anualStarter) * 10 + "€"); //ISSUE HERE

    }
    else {
      //MONTHLY
      priceValueStarter.html(priceStarter[parseInt(handle)]); //WORKS

    }
  });