我想要一个视频持续时间的滑块,范围从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次,其值为msToHHMMSS
,10000
,然后再次调用5400000
,然后{{1调用但值为10000
并抛出错误:HHMMSSToms
。
我看过this question,但正如我在开头所说,我需要undefined
格式。
答案 0 :(得分:1)
如果您不使用format
选项初始化滑块,但只是转换更新函数中的值,可能就可以了:
timeSlider.noUiSlider.on('update', function (values, handle) {
if (handle) {
$('.timeMax').text(msToHHMMSS(values[handle]));
} else {
$('timeMin').text(msToHHMMSS(values[handle]));
}
});
或者你还有另一个地方想要显示时间格式吗?