网站的Java脚本变体

时间:2015-04-28 18:47:14

标签: javascript

这里的网站有一个音乐播放器http://www.numberonedesigns.com/ubermusic.com/ ...当按下随机突出显示的下一个按钮时,它不会正确随机化。它总是回到播放列表上的第一首歌然后随机化下一个..这里是变量代码。我试过搞了一段时间,但我决定需要一些帮助

$next.click(function(){
        var num = 0;
        $.cookie('plate_time', 1);
        if($random.hasClass('active')){
            while(num == $audio.currentTrack){num = Math.floor(Math.random() * (opt.playlist.length));}
        }else{
            num = $audio.currentTrack - 1;
        }

        $audio.loadTrack(num);
    });

    $playlist.on('click', '.track', function(){
        $audio.loadTrack($(this).attr('rel'));
    });

    $prev.click(function(){
        var num = 0;
        $.cookie('plate_time', 0);
        if($random.hasClass('active')){
            while(num == $audio.currentTrack){num = Math.floor(Math.random() * (opt.playlist.length));}
        }else{
            num = $audio.currentTrack - 1;
        }

        $audio.loadTrack(num);
    });

2 个答案:

答案 0 :(得分:1)

您在功能开始时将num设置为0。 这意味着当当前曲目是播放列表[0]时触发该功能,但是当当前曲目不是播放列表[0]但是num被设置为0时,随机不被调用并且播放列表[0] ]再次播放。 while检查在启动时将num设置为0使您失败。

答案 1 :(得分:1)

既然你问得这么好:

$next.click(function(){
    var num = Math.floor(Math.random() * (opt.playlist.length)); 
    //Set the random number here.
    $.cookie('plate_time', 1);
    if($random.hasClass('active')){
        while(num == $audio.currentTrack){num = Math.floor(Math.random() * (opt.playlist.length));} 
        // leaving it here JIC you get the same track.
    }else{
        num = $audio.currentTrack - 1; 
    // cos the ordering still works here if not on random. 
    }

    $audio.loadTrack(num);
});

$playlist.on('click', '.track', function(){
    $audio.loadTrack($(this).attr('rel'));
});

$prev.click(function(){
    var num = Math.floor(Math.random() * (opt.playlist.length));
    $.cookie('plate_time', 0);
    if($random.hasClass('active')){
        while(num == $audio.currentTrack){num = Math.floor(Math.random() * (opt.playlist.length));}
    }else{
        num = $audio.currentTrack - 1;
    }

    $audio.loadTrack(num);
});