我有一个简单的div,它应该在onclick上播放随机声音。我将声音存储在这样的对象数组中:
var sounds = [
{
animalType: 'horse',
sound: new Audio('../sounds/Horse-neigh.mp3')
},
{
animalType: 'bear',
sound: new Audio('../sounds/grizzlybear.mp3')
},
{
animalType: 'goat',
sound: new Audio('../sounds/Goat-noise.mp3'),
}
]
然后当我将其随机化时,会出现以下错误:
sound.play is not a function
这是我尝试将其随机化:
var player = document.getElementById('player');
player.addEventListener('click', function()
var sound = sounds.sort( () => Math.random() - 0.5)
sound.play()
})
为什么会给我这个错误,我如何使它起作用?当它只是一个数组时,它可以工作,但是当将数组与对象一起使用时,它不起作用。
最佳答案
[编辑]我做了一个有效的例子here。
随机化声音数组的索引会更简单。下面的例子:
var player = document.getElementById('player');
player.addEventListener('click', function()
var sound = sounds[Math.floor(Math.random()*sounds.length)];
sound['sound'].play() //acessing "sound" element from your randomized object
})