已打开切换到下一曲目

Onended switch to Next track

本文关键字:曲目      更新时间:2023-09-26

我正在尝试构建一个MP3播放器。在这里,我想在当前策略结束后切换到下一首歌曲。

这是我代码的一部分:

function clicki(ID, norrnd) {
  if (norrnd == 'nor') {
    $('.liActive').removeClass('liActive');
    $('#' + ID).next().addClass('liActive');
    // Set track Data
    $('audio').attr('id', 'audioNor');
    $('audio').attr('src', $('.liActive').attr('rel'));
    // Play
    var player = $('.tbd').get(0);
    player.play();
    $('#pause').removeClass('hi');
    $(player).bind('ended', clicki(ID++, 'nor')); //as well as .onfinish result in TOO MUCH RECURSION error.
  }
}
<audio controls id="" class="tbd" type="audio/mpeg" src="Ella Fitzgerald - It Don't Mean a Thing.mp3"></audio>

因此,当我第一次启动clicki()页面时,页面会立即冻结:

递归过多。

如何使轨道在没有递归洪水的情况下自动切换?

你要立即调用函数——你需要围绕它创建一个函数:

function clicki(ID, norrnd) {
  if (norrnd === 'nor') {
    $('.liActive').removeClass('liActive');
    $('#' + ID).next().addClass('liActive');
    // Set track Data
    $('audio').attr('id', 'audioNor');
    $('audio').attr('src', $('.liActive').attr('rel'));
    // Play
    var $player = $('.tbd');;
    $player.get(0).play();
    $('#pause').removeClass('hi');
    // if you call it now, it's going to keep calling itself
    $player.bind('ended', function () {
      clicki(ID++, 'nor');
    });
  }
}