Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/469.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 关于简化我的代码有什么想法吗?_Javascript_Jquery_Dry - Fatal编程技术网

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代码的常见问题。