Javascript 将数字小数转换为厘米或英寸后有条件地格式化
我有一个开关,可以将我的数字转换为厘米或英寸,小数点为1 然而,我希望厘米没有小数,而英寸有1位小数 这是我当前的代码: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
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()
,但根据每个单位要显示的小数位数,使用不同的值。