Программа калькулятор в html и javascript, который превышает 59 в секундах - PullRequest
0 голосов
/ 14 декабря 2018

У меня есть программа калькулятор, которая превышает 59 в секундах.Например, если я рассчитываю скорость до 4 минут и 40 секунд и выбираю расстояние марафона как 42 195 километров или 42 195 метров, программа рассчитывает 3 часа, 16 минут и 64 секунды.Правильный расчет должен составлять 3 часа 17 минут и 4 секунды.Я попытался найти ошибку в pace_sec в pacecalculator.js ниже, но не нашел решения.

Сайт с калькулятором: https://spurt.no/spurtcoach/

Есть идеи, что вызывает эту ошибку?

var calculate = {
        time : function() {
            if ( !_check.time() ) { modal.open('error', 'To calculate Time, enter the Pace and Distance'); }
            else {
                var time = seconds_to_hhmmss( _get.distance() * _get.pace() * _get.factor() );
                document.querySelector('#time-hours').value = time['h'];
                document.querySelector('#time-minutes').value = time['m'];
                document.querySelector('#time-seconds').value = time['s'];

                modal.open('info');
            }
        },
        distance : function() {
            if ( !_check.distance() ) { modal.open('error', 'To calculate Distance, enter the Time and Pace'); }
            else {
                var distance = _get.time() / ( _get.pace() / _get.factor(true) );
                document.querySelector('#distance-amount').value = distance.toFixed(4);

                modal.open('info');
            }
        },
        pace : function() {
            if ( !_check.pace() ) { modal.open('error', 'To calculate Pace, enter the Time and Distance'); }
            else {
                var pace_sec = ( _get.time() / _get.distance() ) / _get.factor();
                var pace = seconds_to_hhmmss( parseInt(pace_sec) );

                if ( parseInt(pace['h']) > 0 ) {
                    pace['m'] = parseInt(pace['m']) + (parseInt(pace['h'])*60);
                    pace['h'] = 0;
                }
                document.querySelector('#pace-minutes').value = pace['m'];
                document.querySelector('#pace-seconds').value = pace['s'];

                modal.open('info');
            }
        },
        splits : function() {}
    }

    var _check = {
        time : function() { return ( !!_get.distance() && !!_get.pace() ); },
        distance : function() { return ( !!_get.time() && !!_get.pace() ); },
        pace : function() { return ( !!_get.time() && !!_get.distance() ); }
    }

    var _get = {
        factor : function(reverse) {
            var d = document.querySelector('#distance-unit option:checked').value;
            var p = document.querySelector('#pace-unit option:checked').value;
            return (!!reverse) ? convert_units(p, d) : convert_units(d, p);
        },
        time : function() {
            var h = document.querySelector('#time-hours').value;
                h = (h == '') ? 0 : stripZeros(h);
            var m = document.querySelector('#time-minutes').value;
                m = (m == '') ? 0 : stripZeros(m);
            var s = document.querySelector('#time-seconds').value;
                s = (s == '') ? 0 : stripZeros(s);
            var time_seconds = hhmmss_to_seconds(h,m,s);

            return (
                isPositiveNumber(h) &&
                isPositiveNumber(m) &&
                isPositiveNumber(s) &&
                ( time_seconds > 0 )

            ) ? parseFloat(time_seconds) : false;
        },
        distance : function() {
            var el = document.querySelector('#distance-amount');
            var dist = el.value;
                dist = stripZeros( dist.replace(',','.') );
                el.value = dist;

            return (isPositiveNumber(dist) && dist > 0) ? parseFloat(dist) : false;
        },
        pace : function() {
            var m = document.querySelector('#pace-minutes').value;
                m = (m == '') ? 0 : stripZeros(m);
            var s = document.querySelector('#pace-seconds').value;
                s = (s == '') ? 0 : stripZeros(s);
            var time_seconds = hhmmss_to_seconds(0,m,s);

            return (
                isPositiveNumber(m) &&
                isPositiveNumber(s) &&
                ( time_seconds > 0 )
            ) ? parseFloat(time_seconds) : false;
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...