Javascript:parseInt在涉及数学运算符时的问题
我有一个滑块,它在“slide”上从数组中获取定价值(带欧元符号的字符串),然后对html输出进行解析(parseInt)。这很好,在输出上我得到了数字加上符号,但是当我需要乘以这些值时(将月定价切换为anual),我失去了输出,没有数字或符号。所以我猜parseInt在没有数学运算符的情况下工作正常。。。?我已经仔细研究过类似的问题,但我找不到任何解决方案,这让我更加困惑……有人能告诉我遗漏了什么吗?守则:Javascript:parseInt在涉及数学运算符时的问题,javascript,html-parsing,Javascript,Html Parsing,我有一个滑块,它在“slide”上从数组中获取定价值(带欧元符号的字符串),然后对html输出进行解析(parseInt)。这很好,在输出上我得到了数字加上符号,但是当我需要乘以这些值时(将月定价切换为anual),我失去了输出,没有数字或符号。所以我猜parseInt在没有数学运算符的情况下工作正常。。。?我已经仔细研究过类似的问题,但我找不到任何解决方案,这让我更加困惑……有人能告诉我遗漏了什么吗?守则: var priceStarter = [ '149€',
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)]);
}
})
) 您的
priceStarter[parseInt(handle)]
是一个类似“249欧元”
的字符串。所以你不能使用anualStarter*10
(“249€”*10
)-它是NaN
。尝试改用parseInt(anualStarter)*10
一点解释。当您尝试使用“249€”*10
时,JavaScript引擎会尝试将字符串“249€”转换为数字,而不会将其解释为整数或其他内容。因此,您的“249欧元”*10
与编号(“249欧元”)*10
相同,编号(“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
}
});
解析时是否检查了handle
的值?你确定pricestarter
索引parseInt(handle)
中有一个元素吗?这个console.log(anualStarter)
给了我正确的值,但是这个console.log(anualStarter*10)
给了我NaNit只在我从数组中删除欧元符号,并且滑块到达“联系我们”时才起作用数组位置,不显示任何内容。但是如果没有操作,效果很好…我已经用我修改过的代码更新了我的答案。我已经成功地完成了这项工作,解决方案非常相似,逻辑相同,但您的代码更优雅,所以谢谢:)