この質問に既に回答があった場合は、答えを見つける場所を教えてください。jQueryを使用して2つのテーブルの相違を計算する
私は3つの異なるテーブルを含む "スプレッドシート"スタイルのフォームを設定しています。最初のテーブルには、従業員のリストとその開始時刻/終了時刻、および合計作業時間が表示されます。 2番目の表には、従業員の予定開始時刻/終了時刻/合計時間が含まれます。 3番目の表には、実際の勤務時間と勤務時間数の差が含まれている必要があります。
合計作業時間/作業時間の計算を取得できましたが、差を計算するjqueryの計算式が機能していません。ここで
ページを含むjsfiddleです:https://jsfiddle.net/Dragoonman/6oyauwr8/
jQueryの
// JavaScript Document
$(document).ready(function() {
var employees = ['Greg Weiland', 'Alicia Hawly', 'Charlen Connoly',
'Dakota Giles', 'Donovan Cole', 'Robert Hill', 'Douglas Spirs',
'Casey Green', 'Jared Peterson', 'Elizabeth P', 'Carl Mark',
'Carma J.', 'Ike J.', 'Elias H.'
];
//This for each loop will write the employee names in the array above
into their own rows
for (i = 0; i < employees.length; i++) {
$('#footer').before('<tr class="rowEmployee"><th>' + employees[i] +
'</th><td><input class="Time1" type="text"></td>' +
'<td><input class="Time2" type="text">' +
'</td><td><input class="Hours"></td></tr>');
$('#footer2').before('<tr class="rowSchedule"><td><input class="Time3" type="text"></td>' +
'<td><input class="Time4" type="text"></td>' +
'<td><input class="Hours2"></td></tr>');
$('#footer3').before('<tr class="rowDiff"><td><input class="diff"></td></tr>');
}
$('.Time2').on('change', function() {
$('.rowEmployee').each(function() {
var time1 = $('.Time1', this).val().split(':');
var time2 = $('.Time2', this).val().split(':');
//The following calculations turn minutes into a fraction to make the math easier
var hoursWorked1 = parseInt(time1[0]) + ((parseInt(time1[1]) == 0) ? 0 : (parseInt(time1[1])/60));
var hoursWorked2 = parseInt(time2[0]) + ((parseInt(time2[1]) == 0) ? 0 : (parseInt(time2[1])/60));
//Here is your difference in hours calculation below
var diff = hoursWorked2 - hoursWorked1;
//Finally, write the total hours worked to the textbox, rounding to nearest hundredth
$('.Hours', this).val(Math.round(diff * 100)/100);
});
});
$('.Time4').on('change', function() {
$('.rowSchedule').each(function() {
var time1 = $('.Time3', this).val().split(':');
var time2 = $('.Time4', this).val().split(':');
//The following calculations turn minutes into a fraction to make the math easier
var hoursWorked1 = parseInt(time1[0]) + ((parseInt(time1[1]) == 0) ? 0 : (parseInt(time1[1])/60));
var hoursWorked2 = parseInt(time2[0]) + ((parseInt(time2[1]) == 0) ? 0 : (parseInt(time2[1])/60));
//Here is your difference in hours calculation below
var diff = hoursWorked2 - hoursWorked1;
//Finally, write the total hours worked to the textbox, rounding to nearest hundredth
$('.Hours2', this).val(Math.round(diff * 100)/100);
});
});
$('.Time2').on('change', function() {
$('.rowDiff').each(function() {
var time1 = $('#footer.rowEmployee.Hours', this).val();
var time2 = $('#footer2.rowSchedule.Hours2', this).val();
var diff = time2 - time1;
$('.diff', this).val(diff);
});
});
});
提供できるすべてのヘルプは大幅に
は提案をいただき、ありがとうございます。元のjqueryコードは、すべての行を同時に計算するボタンで使用するように設計されています。私はそれを修正して、各行が満たされたときに、その行だけを計算するようにしました。また、2つの関数のそれぞれに追加された 'if()'ステートメントは、私が探していた機能を提供します。もう一度、ありがとうございます。 – Dragonman86