javascript - 如何使用javascript在动态内容中播放下一首音乐和暂停当前音乐?
问题描述
嗨,javascript 中有没有办法播放下一首歌曲并暂停当前播放的歌曲,因为这是动态的,并且它们具有相同的 id 和 onClick 值。我们如何处理 javascript 中的动态内容?
索引.ejs
<% music.forEach(function(muzic){ %>
<div class="col-lg-3 col-md-6 col-sm-6">
<div class="card">
<img class="featured-image" src="/uploads/featured-img/<%= muzic.featured_img %>" alt="">
<div class="card-img-overlay" id="toggleIcon">
<a onClick="togglePlay()" class="select-play">
<img class="select-play-btn" src="/img/select-play.png" id="play-pause" width="80">
<audio id="myAudio" src="/uploads/audio-file/<%= muzic.audio %>"></audio>
</a>
</div>
</div>
</div>
<% }); %>
脚本
<script>
var myAudio = document.getElementById("myAudio");
var isPlaying = false;
function togglePlay() {
isPlaying ? myAudio.pause() : myAudio.play();
var img = document.getElementById('play-pause').src;
if (img.indexOf('select-play.png')!=-1) {
document.getElementById('play-pause').src = '/img/pause-outline.png';
}
else {
document.getElementById('play-pause').src = '/img/select-play.png';
}
var element = document.getElementById("toggleIcon");
element.classList.toggle("pause-style");
};
myAudio.onplaying = function() {
isPlaying = true;
};
myAudio.onpause = function() {
isPlaying = false;
};
</script>
解决方案
您可以在代码中传递值togglePlay(1)
并在代码中添加 if else 条件语句。
function togglePlay(n){
if(n==1){
//do this
}
else {
//do that
}
}
在 index.ejs 中,index
通过 forEach 函数再传递一个参数,例如
<% music.forEach(function(muzic,index){ %>
<div class="col-lg-3 col-md-6 col-sm-6">
<div class="card">
<img class="featured-image" src="/uploads/featured-img/<%= muzic.featured_img %>" alt="">
<div class="card-img-overlay" id="toggleIcon">
<a onClick="togglePlay(<%= index %>)" class="select-play">
<img class="select-play-btn" src="/img/select-play.png" id="play-pause" width="80">
<audio id="myAudio" src="/uploads/audio-file/<%= muzic.audio %>"></audio>
</a>
</div>
</div>
</div>
<% }); %>
使用 id 作为参数来识别音频并执行算法
推荐阅读
- android - 聚焦其他edittext时如何计算edittext上的值?
- python - Python / SQL - 根据现有填充记录的回滚/前滚循环填充记录
- java - Spring - 如何在 forEach 中提交
- multithreading - Exchange Online 会话和运行空间
- reporting-services - 基于数据集的 SSRS 隐藏参数返回无数据抑制默认消息
- docusignapi - 是否有另一种方法可以将收件人视图嵌入到具有更长有效时间的 URL 的应用程序中?
- paypal - PayPal 自适应支付返回 URL 参数
- python - 如何更新类中的值
- python-3.x - 将 LinearRegression(来自 sklearn.linear_model)系数保存在列表中
- java - Hibernate 验证导致错误的列类型错误