javascript - 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();
解决方案
歌曲完全加载后处理开始播放可能会更好。像这样的东西:
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)];
推荐阅读
- reactjs - React 中的动态标题内容
- xcode - Xcode 11.2 助手布局灰显
- c++ - 为什么 gzwrite 向量与 gzwrite 数组不同,数组值相同?
- java - 在 Java 中保存预算数据的最佳文件类型?
- laravel - 无需重复代码即可打开基于请求值的视图
- lua - PowerDNS - DNSQuestion 始终为零
- bash - 有没有办法直接将 parquet 文件中的数据插入 PostgreSQL 数据库?
- sql - 如何显示至少进行了两次捐赠的行?
- reactjs - Redux 无法读取状态函数
- javascript - 如何从黑色和白色来回更改网格中框的颜色