亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

單擊時的按鈕會更改音軌并使所有其他音頻靜音

單擊時的按鈕會更改音軌并使所有其他音頻靜音

汪汪一只貓 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 關注
  • 142 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號