以下のスニペットでは、「再生」をクリックするとmp3が再生され、「再生」が「再生」に変更されます。しかし、私の現在のブラウザ(Mozilla、Safari)では次のように表示されます: "Play"をクリックすると、 "再生中"に変換されますが、ファイルは再生されません。次に、「再生」をクリックしたときにのみファイルが再生されます。なぜ2回クリックしなければならないのですか? "document.getElementById( 'player')という行をコメントアウトするときinnerHTML = '再生';"最初のクリック後すぐにファイルが再生されます。audioとinnerHTMLを一緒にクリックしたコールバックが期待どおりに機能していませんか?
あなたが.innerHTML += "playing"
を用い
#player
.innerHTML
で
#text
ノードを連結または
.insertAdjacentHTML
<!doctype html>
<html>
<body>
<div id="player">Play</div>
<script>
audioEl = document.createElement("audio");
audioEl.setAttribute('src','audioFile.mp3');
document.getElementById('player').appendChild(audioEl);
document.getElementById('player').addEventListener('click',function() {
this.innerHTML += 'playing';
audioEl.play();
});
</script>
</body>
</html>
を使用することができ
document.getElementById('player').innerHTML = 'playing';
で、<audio>
要素を含む、#player
の.innerHTML
を交換する
<!doctype html>
<html>
<body>
<div id="player">Play</div>
<script>
audioEl = document.createElement("audio");
audioEl.setAttribute('src','audioFile.mp3');
document.getElementById('player').appendChild(audioEl);
document.getElementById('player').addEventListener('click',function() {
document.getElementById('player').innerHTML = 'playing';
audioEl.play();
});
</script>
</body>
</html>