[解決済み] ボタンがクリックされたら、jQueryで音声ファイルを再生する
2022-03-12 09:34:53
質問
ボタンをクリックするとオーディオファイルを再生しようとしているのですが、うまくいきません。私のhtmlコードは以下の通りです。
<html>
<body>
<div id="container">
<button id="play">
Play Music
</button>
</div>
</body>
</html>
私のJavaScriptは:
$('document').ready(function () {
$('#play').click(function () {
var audio = {};
audio["walk"] = new Audio();
audio["walk"].src = "http://www.rangde.org/static/bell-ring-01.mp3"
audio["walk"].addEventListener('load', function () {
audio["walk"].play();
});
});
});
を作成しました。 フィドル にも対応しています。
解決方法は?
どのようなアプローチで?
で音声を再生することができます。
<audio>
タグまたは
<object>
または
<embed>
.
サウンドのサイズが小さい場合は、レイジーローディング(必要なときに読み込む)が最適な方法です。audio 要素は動的に作成することができ、読み込まれたときに
.play()
で一時停止し
.pause()
.
使用したもの
使用するのは
canplay
イベントを使用して、ファイルを再生する準備ができたことを検出します。
はありません。
.stop()
関数は、audio 要素のためのものです。一時停止しかできません。そして、オーディオファイルの先頭から始めたいときは、オーディオファイルの
.currentTime
. この例では、次の行を使用します。
audioElement.currentTime = 0;
. を実現するために
.stop()
関数では、まずファイルを一時停止し、その時間をリセットします。
オーディオファイルの長さと現在の再生時間を知りたい場合があります。私たちはすでに
.currentTime
上記のように、その長さを知るには
.duration
.
ガイド例
- ドキュメントの準備ができたら、audio 要素を動的に作成しました。
- そのソースに、再生したい音声を設定します。
- ended'イベントを使って、ファイルを再スタートさせました。
currentTimeが継続時間と同じになると、オーディオファイルは停止します。
を再生します。このとき
play()
の場合、最初から始まります。
-
私たちは
timeupdate
イベントを使用して現在時刻を更新します。.currentTime
を変更します。 -
を使用しました。
canplay
イベントを使用して、ファイルが再生可能な状態になったときに情報を更新します。 - 再生、一時停止、再開のボタンを作成しました。
$(document).ready(function() {
var audioElement = document.createElement('audio');
audioElement.setAttribute('src', 'http://www.soundjay.com/misc/sounds/bell-ringing-01.mp3');
audioElement.addEventListener('ended', function() {
this.play();
}, false);
audioElement.addEventListener("canplay",function(){
$("#length").text("Duration:" + audioElement.duration + " seconds");
$("#source").text("Source:" + audioElement.src);
$("#status").text("Status: Ready to play").css("color","green");
});
audioElement.addEventListener("timeupdate",function(){
$("#currentTime").text("Current second:" + audioElement.currentTime);
});
$('#play').click(function() {
audioElement.play();
$("#status").text("Status: Playing");
});
$('#pause').click(function() {
audioElement.pause();
$("#status").text("Status: Paused");
});
$('#restart').click(function() {
audioElement.currentTime = 0;
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<body>
<h2>Sound Information</h2>
<div id="length">Duration:</div>
<div id="source">Source:</div>
<div id="status" style="color:red;">Status: Loading</div>
<hr>
<h2>Control Buttons</h2>
<button id="play">Play</button>
<button id="pause">Pause</button>
<button id="restart">Restart</button>
<hr>
<h2>Playing Information</h2>
<div id="currentTime">0</div>
</body>
関連
-
[解決済み] ユーザーがDIVの外側をクリックしたときに、jQueryを使用してDIVを非表示にする
-
[解決済み] jQueryを使って要素のIDを取得するにはどうすればよいですか?
-
[解決済み] どのラジオボタンが選択されているかをjQueryで知るにはどうしたらよいですか?
-
[解決済み] jQueryを使ってドロップダウンリスト(セレクトボックス)から選択されたテキストを取得する
-
[解決済み] jQueryを使ったAjaxリクエストの中断
-
[解決済み] jQueryを使用してハイパーリンクのhref属性を変更する方法
-
[解決済み] jQueryを使用してdivのinnerHTMLを置き換えるには?
-
[解決済み] jQueryでラジオボタンを確認する方法は?
-
[解決済み] jQueryの送信ボタンの無効化・有効化
-
[解決済み】オーディオを再生するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】 Uncaught TypeError: data.push is not a function
-
[解決済み】Uncaught TypeError: nullのプロパティ'value'を読み取ることができない
-
[解決済み】Angular JS Uncaught Error。[インジェクター:モジュラー]。
-
[解決済み】JavaScriptのisset()に相当するもの
-
[解決済み] 解決済み】clearInterval()が動作しない [重複] [重複]
-
[解決済み】「Uncaught TypeError: Chromeで "Illegal invocation "が発生する。
-
[解決済み] ローカルファイルを開くことができません - Chrome: ローカルリソースのロードが許可されていません
-
[解決済み】JavaScriptで相対URLへのリダイレクトを行う
-
[解決済み】TypeError:res.jsonは関数ではありません。
-
[解決済み] Uncaught (in promise) TypeError: フェッチに失敗してCorsエラー