javascript - Ruby:每次点击图片,如何播放不同的音频片段?

标签 javascript html ruby audio

我正在用 Ruby 开发一个项目,每次单击一个图像(页面上将有多个图像)时,我想要播放特定于该图像的音频剪辑。根据我目前的情况,每次单击任何图像时只会播放第一个音频剪辑。请在下面查看我的代码:

function play() {
  var audio = document.getElementById("audio");
  audio.play();
}
<div>
  <img src="https://metrouk2.files.wordpress.com/2016/04/red-horse-dot-m_2778460a.jpg" value="PLAY" onclick="play()">
  <audio id="audio" src="audios/track1.mp3"></audio>
</div>
<div>
  <img src="http://www.clker.com/cliparts/O/3/O/G/7/D/green-circle-hi.png" value="PLAY" onclick="play()">
  <audio id="audio" src="audios/track2.mp3"></audio>
</div>

我怎样才能让它工作?

最佳答案

试试这个:

<script>
  function play(emt){
    var audio = emt.getElementsByTagName("audio")[0];
    audio.play();
  }
</script>

<div onclick="play(this)">
  <img src="https://metrouk2.files.wordpress.com/2016/04/red-horse-dot-m_2778460a.jpg" value="PLAY">
  <audio src="audios/track1.mp3" ></audio>
</div>

<div onclick="play(this)">
  <img src="http://www.clker.com/cliparts/O/3/O/G/7/D/green-circle-hi.png" value="PLAY">
  <audio src="audios/track2.mp3" ></audio>
</div>

我更改了您的代码,以便在 onclick 时电话 play , 它通过了 <div>作为参数被点击。那么play查找附加到图像的音频元素。

根据经验,您永远不应在同一页面上出现两个具有相同 ID 的元素。

关于javascript - Ruby:每次点击图片,如何播放不同的音频片段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42813081/

相关文章:

javascript - 渲染组件时如何在我的过滤器函数中使用this.state?

ruby - 我试图理解 Ruby 中的 .freeze 概念。

java - 将值从 jsp 发送到 jsp

javascript - 最持久的 HTML5 数据存储是什么?

html - css自动调整图片大小

Ruby:如何计算字母的频率

ruby - 在 "case... when"语句中使用 boolean 运算符 (Ruby)

javascript - 如何在 Mapbox Javascript 中添加简单的图像叠加层?

javascript - 异步函数是否仅用于 IO 阻塞操作?

javascript - 使用 Javascript 调整图像大小以使其适合视口(viewport)