Javascript 关于简化我的代码有什么想法吗?
你知道如何在这里进行干练吗?我知道我重复的太多了,我不喜欢这样。但我不知道怎么解决它。这将是伟大的简化这个单位转换器。谢谢大家的帮助Javascript 关于简化我的代码有什么想法吗?,javascript,jquery,dry,Javascript,Jquery,Dry,你知道如何在这里进行干练吗?我知道我重复的太多了,我不喜欢这样。但我不知道怎么解决它。这将是伟大的简化这个单位转换器。谢谢大家的帮助 $(':input').bind('keypress keydown keyup change',function(){ var input = parseFloat($(':input[name="input"]').val()) var output1 = ''; var output2 = '';
$(':input').bind('keypress keydown keyup change',function(){
var input = parseFloat($(':input[name="input"]').val())
var output1 = '';
var output2 = '';
if ($("#unitSelector").val() === 'celsius'){
output1 = ((input * 9) / 5 + 32).toFixed(5).toString();
output2 = (input + 273.15).toFixed(5).toString();
$(':input[name="output1"]').val(output1 + " " + "Fahrenheit");
$(':input[name="output2"]').val(output2 + " " + "Kelvin");
}
if ($("#unitSelector").val() === 'fahrenheit') {
output1 = ((input - 32) * 5 / 9).toFixed(5).toString();
output2 = ((input + 459.67) * 5 / 9).toFixed(5).toString();
$(':input[name="output1"]').val(output1 + " " + "Celsius");
$(':input[name="output2"]').val(output2 + " " + "Kelvin");
}
if ($("#unitSelector").val() === 'kelvin') {
output1 = (input - 273.15).toFixed(5).toString();
output2 = (9 / 5 * (input - 273) + 32).toFixed(5).toString();
$(':input[name="output1"]').val(output1 + " " + "Celsius");
$(':input[name="output2"]').val(output2 + " " + "Fahrenheit");
}
});
这里有一个刺:
$(':input').bind('keypress keydown keyup change', function () {
var input = parseFloat($(':input[name="input"]').val()),
type = $("#unitSelector").val(),
output1 = '',
output2 = '',
tag1 = 'Celsius',
tag2 = 'Kelvin';
switch (type) {
case 'celsius':
output1 = ((input * 9) / 5 + 32);
output2 = (input + 273.15);
tag1 = 'Fahrenheit';
break;
case 'fahrenheit':
output1 = ((input - 32) * 5 / 9);
output2 = ((input + 459.67) * 5 / 9);
break;
case 'kelvin':
output1 = (input - 273.15);
output2 = (9 / 5 * (input - 273) + 32);
tag2 = 'Fahrenheit';
break;
}
$(':input[name="output1"]').val(output1.toFixed(5).toString() + " " + tag1);
$(':input[name="output2"]').val(output2.toFixed(5).toString() + " " + tag2);
});
你应该在代码审查网站上发布这篇文章,因为代码并没有真正的问题。我投票结束这个问题,因为它是代码复查。至少,你应该缓存选择器<代码>变量单位选择=$(“#单位选择器”)编码>等,并在每次访问该元素时使用变量。这样jQuery就不会每次都重新选择它,你可以看看类似Knockout的库,它可以帮助将所有jQuery从逻辑中分离出来,在逻辑中得到一些分离。这是过去Javascript代码的常见问题。