3 回答

TA貢獻1851條經驗 獲得超3個贊
而不是使用document.querySelector
use document.querySelectorAll
- 后者將返回一個元素數組,而 prior 將只返回 1 個元素。
有關更多信息document.querySelectorAll

TA貢獻1836條經驗 獲得超13個贊
以下可能是原因。
var everyAudio = document.querySelector('audio');
querySelector
只返回一個元素。
請使用querySelectorAll
獲取數組。pause
為他們每個人打電話。

TA貢獻1788條經驗 獲得超4個贊
由于您建議使用 document.querySelectorAll 而不是 document.querySelector,然后檢查整個數組,第一個問題得到了回答。謝謝你!
對于第二個問題,我自己找到了解決方案。只需要使用音頻 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>
添加回答
舉報