Выполнение различных функций в условиях

#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 для уменьшения, потому что по модулю отрицательных чисел не всегда работает.