Я работал над эталоном времени по нарисованным линиям (прямым или изогнутым), где пользователь может предварительно просмотреть время на графике (например, функции времени). Я пытаюсь добавить диапазон ввода (ползунок), который можно использовать для управления значением синхронизации на оси X графика, для которого я выбрал 5 секунд в качестве примера для конечной точки.
Вот базовый рисунок того, что я имею в виду (показана прямая линия). Предполагается, что ось X находится в диапазоне от 0 до 5 секунд, как и ползунок.

Идея состоит в том, что после нажатия кнопки воспроизведения значение ползунка будет плавно увеличиваться, пока не достигнет максимального значения (100% от 5 секунд). Затем, как только оно достигнет этого максимального значения, кнопка больше не увеличивает значение (если пользователь не перетаскивает назад и не щелкает его снова).
Я надеялся связать это значение, используя свойство time в Vue как для ползунка, так и для индикатора на графике, который мог перемещаться с помощью ползунка вдоль линии. Однако я не смог заставить другие попытки работать с stepUp () и setInterval () и clearInterval () . Я застрял на этом.
Я думал, что, может быть, метод .animate () в jQuery мог бы работать, если бы я использовал ту же продолжительность и добавил шаг, но я надеялся пока использовать ванильный JavaScript, как и остальные мои проект основан только на этом и Vue.js.
Пожалуйста, найдите код, который я написал для этого (я разбил его только на входы и ссылку на Vue).
Ползунок и кнопка воспроизведения
<div id="app">
<input v-model="time" type="range" min="0" max="5" step="any">
<button v-on:click="play">Play</button>
</div>
Vue Reference
let app = new Vue({
el: '#app',
data: {
time: 0,
},
methods: {
play() {
let vm = this;
let duration = (5 - vm.time) * 1000;
},
}
});
Я использовал 0 и 5 в качестве минимальных и максимальных значений и рассчитал длительность, основываясь на них, хотя я не знаю, будет ли это работать, используя 100 (как в 100%) вместо последних и игнорируя 5 секунд .