Javascript 将数字小数转换为厘米或英寸后有条件地格式化

Javascript 将数字小数转换为厘米或英寸后有条件地格式化,javascript,html,jquery,number-formatting,units-of-measurement,Javascript,Html,Jquery,Number Formatting,Units Of Measurement,我有一个开关,可以将我的数字转换为厘米或英寸,小数点为1 然而,我希望厘米没有小数,而英寸有1位小数 这是我当前的代码: function converTo(scale) { $('#ct_size_guide-1761 td').each(() => { // I forgot exact conversion: var multiplier = (scale == 'in') ? 2.5 : 0.4; var newVal=(parseFloat($(thi

我有一个开关,可以将我的数字转换为厘米或英寸,小数点为1

然而,我希望厘米没有小数,而英寸有1位小数

这是我当前的代码:

function converTo(scale) {
  $('#ct_size_guide-1761 td').each(() => {
   // I forgot exact conversion:
    var multiplier = (scale == 'in') ? 2.5 : 0.4; 
    var newVal=(parseFloat($(this).text()) * multiplier).toFixed(1);   

    $(this).text(newVal);
    $(this).siblings('.scale').text((scale=='in')? 'cm' : 'in') ;
  });
}

您只需要有条件地格式化这些数字,就像您根据所选单位为
乘数使用不同的值一样

因此,您需要替换:

var multiplier = scale === 'in' ? 2.5 : 0.4;
var newVal = (parseFloat($(this).text()) * multiplier).toFixed(1); 
比如:

var newVal = scale === 'in'
  ? (parseFloat($(this).text()) * 2.5).toFixed(1)
  : (parseFloat($(this).text()) * 0.4).toFixed(0); 
这样,您可以有不同的乘数,但每个单位的格式也不同

我可能会用
if-else
而不是三元组来重新构造代码。通过这种方式,将更容易根据所选单元实施不同的行为(转换、格式化…):

const$value=$('#value');
常量$unit=$(“#unit”);
常量$result=$(“#result”);
函数updateConversation(){
const value=parseFloat($value.val());
常量单位=$unit.val();
让targetValue;
让目标单位;
如果(单位=='in'){
//显示不带小数的厘米:
targetValue=数学四舍五入(值*2.54);
targetUnit='cm';
}否则{
//以1个小数点显示英寸:
targetValue=(值*0.393701).toFixed(1);
targetUnit='in';
}
$result.text(`${value}${unit}=${targetValue}${targetUnit}`);
}
$value.on('input',updateconversation);
$unit.on('change',updateconversation);
UpdateVersion()

厘米
英寸


Hmm不起作用,现在我的英寸有很多小数。我看你的例子。但是你为我的具体案例提供的那一个不起作用,你知道为什么吗?为什么不起作用?这是一个可运行的片段。如果输入某个值并选择该单位,它会将其转换为另一个单位。这不是你想做的吗?你的代码片段很有效,但是你说我应该替换的东西没有起作用,所以idk如何修复:)我还更新了你引用的代码。在这两种情况下,您只需舍入或调用
.toFixed()
,但根据每个单位要显示的小数位数,使用不同的值。