为了账号安全,请及时绑定邮箱和手机立即绑定

单击时的按钮会更改音轨并使所有其他音频静音

单击时的按钮会更改音轨并使所有其他音频静音

汪汪一只猫 2023-03-24 11:19:00
目标是使许多按钮在单击时播放不同的音频。每次用户单击一个按钮时,它都会切换音频。如果按下不同音频的非播放按钮,第一个音频停止,只有在第二个音频播放之后。此时有 2 个按钮,几乎一切正常,除非“B”音频具有“播放”类并且您单击第一个音频按钮类不会从第二个按钮中删除并且它们开始同时播放。单击任何按钮时如何停止音频而不是暂停?<script> function play(chord) {  var audio = document.getElementById(chord);  var active = document.querySelector('.playing');  var everyAudio = document.querySelector('audio');  if(audio.classList.contains('playing')){     audio.pause();  }else {     everyAudio.pause();     everyAudio.classList.remove('playing');     audio.play();  }  audio.classList.toggle('playing'); }</script><input type="button" value="C Major" onclick="play('C')"><audio id="C"> <source src="Tveice_A_09.09.wav" type="audio/wav"></audio><input type="button" value="B Major" onclick="play('B')"><audio id="B"> <source src="Black_sand_cello1_raw.wav" type="audio/wav"></audio>谢谢你对第一个问题的回答。根据您的建议,切换开始工作:var everyAudio = document.querySelectorAll('audio');if(audio.classList.contains('playing')){   audio.pause();}else{   for (var i = 0; i < everyAudio.length; i++){     everyAudio[i].classList.remove('playing');     everyAudio[i].pause();   }   audio.play();}
查看完整描述

3 回答

?
皈依舞

TA贡献1851条经验 获得超3个赞

而不是使用document.querySelectoruse document.querySelectorAll- 后者将返回一个元素数组,而 prior 将只返回 1 个元素。

有关更多信息document.querySelectorAll



查看完整回答
反对 回复 2023-03-24
?
开心每一天1111

TA贡献1836条经验 获得超13个赞

以下可能是原因。

  var everyAudio = document.querySelector('audio');

querySelector只返回一个元素。

请使用querySelectorAll获取数组。pause为他们每个人打电话。


查看完整回答
反对 回复 2023-03-24
?
尚方宝剑之说

TA贡献1788条经验 获得超4个赞

  1. 由于您建议使用 document.querySelectorAll 而不是 document.querySelector,然后检查整个数组,第一个问题得到了回答。谢谢你!

  2. 对于第二个问题,我自己找到了解决方案。只需要使用音频 currentTime 音频参数。所以最后看起来是这样的。

<script>

 function play(chord) {

  var audio = document.getElementById(chord);

  var active = document.querySelector('.playing');

  var everyAudio = document.querySelectorAll('audio');


  if(audio.classList.contains('playing')){

      audio.pause();

  }else{

     for (var i = 0; i < everyAudio.length; i++){

         everyAudio[i].classList.remove('playing');

         everyAudio[i].pause();

         everyAudio[i].currentTime = 0;

     }

     audio.play();

 }

 audio.classList.toggle('playing');

}

</script>


<input type="button" value="C Major" onclick="play('C')">

<audio id="C">

 <source src="Tveice_A_09.09.wav" type="audio/wav">

</audio>


<input type="button" value="B Major" onclick="play('B')">

<audio id="B">

 <source src="Black_sand_cello1_raw.wav" type="audio/wav">

</audio>


查看完整回答
反对 回复 2023-03-24
  • 3 回答
  • 0 关注
  • 115 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信