Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/373.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 关于重构jQuery时长计算的建议_Javascript_Jquery_Refactoring - Fatal编程技术网

Javascript 关于重构jQuery时长计算的建议

Javascript 关于重构jQuery时长计算的建议,javascript,jquery,refactoring,Javascript,Jquery,Refactoring,一般来说,我对jQuery和javascript比较陌生;我有足够的知识来编写基本的脚本,但我可以通过一些帮助来优化我的一些代码,这些代码对我来说似乎并不高效,但我不知道修改它的最佳方法 我有两个输入type='time'表单字段和一个隐藏表单字段,用于保存两个字段之间的差异 这是我的密码: function timeDifference(field1, field2) { var field1val = $(field1).val(); var field2val = $(fi

一般来说,我对jQuery和javascript比较陌生;我有足够的知识来编写基本的脚本,但我可以通过一些帮助来优化我的一些代码,这些代码对我来说似乎并不高效,但我不知道修改它的最佳方法

我有两个输入type='time'表单字段和一个隐藏表单字段,用于保存两个字段之间的差异

这是我的密码:

function timeDifference(field1, field2) {
    var field1val = $(field1).val();
    var field2val = $(field2).val();

    if ((field1val !== '--:--') && (field2val !== '--:--')) {           
        var hours = field1val.split(':')[0] - field2val.split(':')[0];
        var minutes = field1val.split(':')[1] - field2val.split(':')[1];

        minutes = minutes.toString().length<2?'0'+minutes:minutes;
        if(minutes<0){ 
        hours--;
        minutes = 60 + minutes;
        }
        hours = hours.toString().length<2?'0'+hours:hours;

        var difference = hours + ':' + minutes;
        return difference;          
    } else return false;
};

    $('#assessmentHeaderStartTime, #assessmentHeaderEndTime').change(function() {
    var duration = timeDifference('#assessmentHeaderStartTime','#assessmentHeaderEndTime');
    $('#assessmentHeaderDuration').val(duration);
    });
功能时差(字段1、字段2){
var field1val=$(field1.val();
var field2val=$(field2.val();
如果((field1val!='--:')&&&(field2val!='--:'){
var hours=field1val.split(“:”)[0]-field2val.split(“:”)[0];
var minutes=field1val.split(“:”)[1]-field2val.split(“:”)[1];

分钟=minutes.toString().length您确定如果单击向上箭头,会调用
change
事件吗?根据我运行的快速测试,不会调用


如果更改事件触发太多,我打算建议使用
onBlur
,但看起来您拥有的代码将完全按照您的意愿运行。有关
onBlur
onChange

之间区别的更多详细信息,请参阅问题。是的,我确信它会在向上箭头上触发change。所有3个字段都位于同一pa上ge和您可以看到持续时间字段的更新,您可以单击箭头更改其他两个时间字段。感谢您的链接,但正如您所说,我现在得到的代码似乎最适合我希望它的行为。