Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Не перезаписывать переменную до удаления (https://javascript.ru/forum/dom-window/83346-ne-perezapisyvat-peremennuyu-do-udaleniya.html)

ethereal 19.11.2021 20:06

Не перезаписывать переменную до удаления
 
Сразу извиняюсь за глупый вопрос, но хочется разобраться в этом

Есть примерно такой код:

video.addEventListener('timeupdate', (event) => {
  const time = video.currentTime;
  console.log(time);
});


Переменная "time", постоянно перезаписывается.

Интересует следующее, можно сделать что б в переменную записывалось только самое первое значение и не менялось, до того как будет удалена через 'delete time;', и затем cнова также записывалось первое значение и т.д?

Спасибо!

voraa 19.11.2021 20:17

Потому, что по мере проигрывания клипа постоянно меняется текущий таймкод и постоянно возникает событие timeupdate

Про переменную и особенно про ее удаление - не понял.

Aetae 19.11.2021 20:39

let time;
video.addEventListener('timeupdate', (event) => { 
  time ??= video.currentTime;
  console.log(time);
});

voraa 19.11.2021 20:51

Aetae,
А смысла?
Не проще
let time;
video.addEventListener('timeupdate', (event) => {
  time = video.currentTime;
  console.log(time);
}, {once:true});

И что там про удаление?

Aetae 19.11.2021 20:59

voraa,
let time;
time ??= 1;
time ??= 2;
time ??= 3;
time // 1

А удаление, надо полагать, по какому-то другому событию он сделает:
time = null;
(delete, конечно, не сработает) и оно снова перезапишется на currentTime. :)

Хотя зачем - это да, не понятно. Можно вообще просто рукам брать currentTime и ничего не удалять.

voraa 19.11.2021 21:15

Ну может ты и прав, если там еще какие действия надо делать
Например

let time;
video.addEventListener('timeupdate', (event) => {
  time ??= video.currentTime;
  if ( video.currentTime - time >= 5000) {
     ....
  }
});

ethereal 19.11.2021 21:30

Все что мне нужно это выполнить события в определенное время видео, через несколько секунд, к примеру 7

Допустим видео начинается с 20-ой секунды, затем:

27 event
34 event
41 event

и т.д

Важно что б события сработали когда именно на видео будет определенная секунда, просто через Interval не подходит

ethereal 19.11.2021 21:39

Я думал если записать первое значение, потом можно сравнить, к примеру:

const time = video.currentTime;
if ( ideo.currentTime > (time + 7)) {
event
delete time;
}


И все по новой, но что то не так тут

ethereal 19.11.2021 21:48

Другими словами мне нужно сделать превью видео при наведение на блок

Что то такое, видео начинается на 20-ой секунде, идет 3 сек, перематывается на 7, идет 3 сек, перематывается на 7 и т.д

Aetae 19.11.2021 22:48

Жестоко. Ради превью ты юзеру всё видео целиком так скачаешь.)


Часовой пояс GMT +3, время: 09:36.