我想要一个视频持续时间的滑块,范围从 00:00:10 到 01:30:00。我以毫秒为单位获得持续时间,我也需要以毫秒为单位发送它们。我noUiSlider.create
用我的 2 个格式化函数和一个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]);
}
});
问题是该msToHHMMSS
函数被调用 3 次,使用 的值10000
,5400000
然后再次使用10000
,然后 HHMMSSToms
被调用但使用 的值undefined
并抛出错误:Cannot read property 'split' of undefined
。
我看过这个问题,但正如我一开始所说的,我需要hh:mm:ss
格式。