首页 > 解决方案 > Javascript:从数组(列表)中播放一首随机歌曲

问题描述

我想在网站上播放一首随机歌曲。曲调很短(最多几秒钟,它们不需要预加载或缓冲)。

这部分工作,歌曲的数量可能是无限的,因为tunes.length自动计算所有歌曲。

document.write在屏幕上显示随机歌曲 URL 的 URL

tunes = new Array(
'"http://example.net/abcd.ogg"',
'"http://example.net/efgh.ogg"',
'"http://example.net/ijkl.ogg"'
)
var audiopath = (tunes[Math.floor(Math.random() * tunes.length)])
document.write (audiopath)

当 URL 被定义为常量时,这部分也可以工作。

var song = new audio('http://example.net/abcd.ogg');
song.play();

当我尝试用变量替换常量 URL 时audiopath,它无法播放。
语法可能有什么问题吗?我尝试在 URL 中使用和不使用单引号运行它,或者'"http://example.net/ijkl.ogg"'"http://example.net/ijkl.ogg"

var song = new audio(audiopath);
song.play();

标签: javascriptaudiorandomshuffle

解决方案


歌曲完全加载后处理开始播放可能会更好。像这样的东西:

let loaded = false;
const song = new Audio();

song.addEventListener('loadeddata', function() 
{
    loaded = true;
    song.play();
}, false);

song.addEventListener('error' , function() 
{
    alert('error loading audio');
}, false);

song.src = tunes[Math.floor(Math.random() * tunes.length)];

推荐阅读