Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript:从数组中随机播放歌曲(列表)_Javascript_Audio_Random_Shuffle - Fatal编程技术网

Javascript:从数组中随机播放歌曲(列表)

Javascript:从数组中随机播放歌曲(列表),javascript,audio,random,shuffle,Javascript,Audio,Random,Shuffle,我想在网站上随机播放一首歌。曲调很短(最多几秒钟,不需要预加载或缓冲) 这部分功能正常,歌曲的数量可能是无限的,因为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 = (tu

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

这部分功能正常,歌曲的数量可能是无限的,因为
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();
当我尝试用变量
audiopath
替换常量URL时,它无法播放
可能是语法有问题吗? 我试着在URL
“”“”


最好在歌曲完全加载后开始播放。大概是这样的:

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)];

谢谢,我试试看。对于较长的歌曲,它看起来更通用。我的做法有所不同,将random/shuffle函数保存为一个单独的.js文件,并将其用作播放器中的音频源。html文件调用var audio=newaudio(“rndorder.js”);音频播放();js文件返回var audio=new audio(tunes[Math.floor(Math.random()*tunes.length)])(我甚至不知道.js文件中是否需要这一行,但它可以工作)。
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)];