我有这个滑块,可以滑动'从数组中获取定价值(带有欧元符号的字符串),稍后为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)]);
}
})
答案 0 :(得分:1)
您的priceStarter[parseInt(handle)]
是一个类似"249€"
的字符串。因此,您无法使用anualStarter * 10
("249€" * 10
) - 它是NaN
。请尝试使用parseInt(anualStarter) * 10
。
一点解释。当您尝试使用"249€" * 10
时,JavaScript引擎会尝试将字符串“249€”转换为数字,并且不会将其解释为整数或其他内容。因此,"249€" * 10
与Number("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
}
});