我有一个简单的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
})

10-08 19:48