#javascript #jquery #if-statement
#javascript #jquery #if-оператор
Вопрос:
Я хотел бы сделать что-то вроде этого:
Если isPlaying = false;
тогда функции nextTrack()
и previousTrack()
должны вызывать только loadTrack(track_index)
, а не playTrack()
иначе, они должны вызывать оба loadTrack(track_index)
и playTrack()
Как я могу это сделать?
let playpause_btn = document.querySelector(".playpause-track");
let next_btn = document.querySelector(".next-track");
let prev_btn = document.querySelector(".prev-track");
let track_index = 0;
let isPlaying = false;
function playpauseTrack() {
if (!isPlaying) playTrack();
else pauseTrack();
}
function playTrack() {
curr_track.play();
isPlaying = true;
}
function pauseTrack() {
curr_track.pause();
isPlaying = false;
}
function nextTrack() {
if (track_index < track_list.length - 1)
track_index = 1;
else track_index = 0;
loadTrack(track_index);
playTrack();
}
function prevTrack() {
if (track_index > 0)
track_index -= 1;
else track_index = track_list.length;
loadTrack(track_index);
playTrack();
}
Ответ №1:
function nextTrack() {
if (track_index < track_list.length - 1) {
track_index = 1;
}else{
track_index = 0;
}
loadTrack(track_index);
if(isPlaying == true){ playTrack(); }
}
или лучше
function nextTrack() {
track_index = (track_index 1) % track_list.length;
loadTrack(track_index);
if(isPlaying == false){ playTrack(); }
}
prevTrack()
соответственно.
Комментарии:
1. Большое вам спасибо! Если я изменю false на true, он будет работать так, как я хочу….
2. функция nextTrack() { track_index = (track_index 1) % track_list.length; loadTrack(track_index); if(isPlaying == true){ playTrack(); } } функция prevTrack() { track_index = (track_index — 1) % track_list.length; loadTrack(track_index); if(isPlaying == true){ playTrack(); } }
3. Единственная деталь, которая не работает, заключается в том, что когда я нахожусь на первой песне в списке и нажимаю на предыдущую, она не приводит меня к последней песне в списке. Но когда я нахожусь на последней песне и нажимаю «Далее», это приводит меня к первой песне в списке. Но это мелочь, и она не имеет большого значения, еще раз спасибо…
4. 1. Исправлен мой ответ. 2. Вам нужно сделать
index = (index len - 1) % len
для уменьшения, потому что по модулю отрицательных чисел не всегда работает.