NoUiSlider - 格式化毫秒到hh:mm:ss发送未定义

时间:2016-01-14 12:09:39

标签: javascript nouislider

我想要一个视频持续时间的滑块,范围从00:00:10到01:30:00。 我得到的持续时间以毫秒为单位,我也需要以毫秒为单位发送它们。 我使用我的2个格式化函数和noUiSlider.create事件处理程序调用{​​{1}}:

update

问题是var timeSlider = document.getElementById('timelineranger'); noUiSlider.create(timeSlider, { start: [10000, 5400000], connect: true, behaviour: 'tap-drag', step: 10000, range: { 'min': 10000, 'max': 5400000 }, format: { to: HHMMSSToms, from: msToHHMMSS } }); function msToHHMMSS(value) { var duration = moment.duration(parseInt(value, 10)); var addZero = function(v) { return (v<10 ? '0' : '') + Math.floor(v); }; var time = addZero(duration.hours()) + ':' + addZero(duration.minutes()) + ':' + addZero(duration.seconds()); return time; } function HHMMSSToms(value) { var a = value.toString().split(':'); var ms = (+a[0]) * 60 * 60 + (+a[1]) * 60 + (+a[2]) * 1000; return ms; } timeSlider.noUiSlider.on('update', function (values, handle) { if (handle) { $('.timeMax').text(values[handle]); } else { $('timeMin').text(values[handle]); } }); 函数被调用了3次,其值为msToHHMMSS10000,然后再次调用5400000,然后{{1调用但值为10000并抛出错误:HHMMSSToms

我看过this question,但正如我在开头所说,我需要undefined格式。

1 个答案:

答案 0 :(得分:1)

如果您不使用format选项初始化滑块,但只是转换更新函数中的值,可能就可以了:

timeSlider.noUiSlider.on('update', function (values, handle) {
    if (handle) {
        $('.timeMax').text(msToHHMMSS(values[handle]));
    } else {
        $('timeMin').text(msToHHMMSS(values[handle]));
    }
});

或者你还有另一个地方想要显示时间格式吗?