2014-03-19 18 views
1

Сейчас я работаю над расписанием, в котором пользователи могут установить их вовремя, время и время, которое они провели за обедом. Затем я использую функцию, которая вычитает из времени & обед из своего времени, чтобы выяснить их часы, а также возможность сверхурочной работы. Я хочу, чтобы javascript установил значение поля сверхурочной работы в '' (aka null), если количество времени, которое они были на работе, составляет 8 часов или меньше.Значение Javascript set null, если значение равно нулю

Мой код для проверки сверхурочных это:

// Return difference between two times in hh:mm[am/pm] format as hh:mm 
function checkOvertime(timein, timeout, away) { 
    // Small helper function to pad single digits 
    function z(n){return (n<10?'0':'') + n;} 
    // Get difference in minutes 
    var subtotal = daytimeStringToMins(timeout) - daytimeStringToMins(timein) - timeStringToMins(away); 
    var regularhours = '08:00'; 
    if (subtotal > timeStringToMins(regularhours)) {var overtime = daytimeStringToMins(timeout) - daytimeStringToMins(timein) - timeStringToMins(away) - timeStringToMins(regularhours);} 
    else {var overtime = '0';} 
    return z(overtime/60 | 0) + ':' + z(overtime % 60); 
} 

, а затем в моей функции вычисления у меня есть это:

if (checkOvertime(timein, timeout, away).value == '00:00') { 
    document.getElementById("date-1-overtime").value = ''; 
} else { 
    document.getElementById("date-1-overtime").value = checkOvertime(timein, timeout, away); 
} 

Так что, если человек находится на работе в течение 8 часов, затем " date-1-overtime "говорит" 00:00 ", но я бы хотел, чтобы он ничего не помещал, чтобы лист печатался более чисто.

Я думаю, может быть, я сбиваю с толку разницу между строками и целыми числами в вычислениях, но я не уверен, надеюсь, кто-то может мне помочь!

+2

Обратите внимание, что 'null' и ноль, как в' 0', не то же самое – adeneo

+0

Да, я специально хочу, чтобы входы были пустыми, чтобы в ячейках таблицы ничего не отображалось, чтобы их было легче читать, когда менеджер распечатывает их. –

+1

Так что вы действительно не хотите «null», вы хотите пустую строку – adeneo

ответ

1

Я думаю, вы должны изменить этот метод, чтобы использовать регулярные выражения для извлечения соответствующих частей ввода, а затем использовать parseint для получения значения в числовой форме.

Преобразуйте это в минуты и если минуты меньше или равны 480 (8 * 60), верните фактическую строку.

Кроме того, вы не можете назначить значение null для параметра html. null - это не то же самое, что и 0. null по существу не определено.

Вы должны вернуть количество минут, отработанных сверхурочно от вашей функции, и использовать 0 для сверхурочной работы, если пользователь не работал сверхурочно.

Смежные вопросы