質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

1630閲覧

addEventListenerで'volumechange'ができません。

show8don

総合スコア11

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2017/04/30 23:55

###前提・実現したいこと
HTML5のビデオプレーヤーのコントロールをjavascriptでしています。音量の変化をさせることができません。アドバイス頂けると助かります。よろしくお願いします。

###発生している問題・エラーメッセージ
ブラウザのコンソールにはエラーメッセージはありません。

エラーメッセージ

###該当のソースコード

HTML

1<div class="video-box js-video-box"> 2 <video class="js-video" id="video"> 3 <source src="video.mp4" type="video/mp4" /> 4 </video> 5 <div id="video-control"> 6 <button class="video-play js-video-play">&gt;</button> 7 <input type="range" class="seekbar seekbar-time js-seekbar-time" value="0" min="0"> 8 <input type="range" class="seekbar seekbar-volume js-seekbar-volume" value="0.5" min="0" max="1" step="0.05"> 9 </div> 10 </div> 11 12<script> 13const videoArray = document.getElementsByClassName('js-video-box'); 14for(let i = 0; i < videoArray.length; i++) { 15 let videoBox = videoArray[i]; 16 let videoSource = videoBox.getElementsByClassName('js-video')[0]; 17 let playButton = videoBox.getElementsByClassName('js-video-play')[0]; 18 let timeSeekbar = videoBox.getElementsByClassName('js-seekbar-time')[0]; 19 let volumeSeekbar = videoBox.getElementsByClassName('js-seekbar-volume')[0]; 20 21 playButton.addEventListener('click',function(){ 22 if (videoSource.paused) { 23 videoSource.play(); 24 playButton.textContent = "||"; 25 } else { 26 videoSource.pause(); 27 playButton.textContent = ">"; 28 } 29 }, 30 false); 31 32 if (videoSource.readyState > 0) { 33 timeSeekbar.max = videoSource.duration; 34 } else { 35 videoSource.addEventListener('loadedmetadata', 36 function() { timeSeekbar.max = videoSource.duration; } 37 ); 38 } 39 40 videoSource.addEventListener("timeupdate", 41 function() { 42 timeSeekbar.value = videoSource.currentTime; 43 }, false); 44 45 46 volumeSeekbar.max = videoSource.volume; 47 videoSource.addEventListener('volumechange', 48 function() { 49 videoSource.volume = volumeSeekbar.value; 50 },false); 51} 52</script>

###試したこと
音量の調整の記述は、サンプルコードを参考にしました。元のコードでは音量調整のシークバーにaddEventListenerをしていましたが、videoタグの方に変えてみました。

###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

volumeSeekbar を動かしたら音量が変わる、というのであれば volumeSeekbar のイベントを拾うべきでは。

JavaScript

1 volumeSeekbar.addEventListener('input',/* 'change' かも */ 2 function() { 3 videoSource.volume = volumeSeekbar.value; 4 },false);

動くサンプル (レンジ部分のみ)https://jsfiddle.net/2L0cuyjb/

投稿2017/05/01 00:05

編集2017/05/01 00:12
kei344

総合スコア69407

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

show8don

2017/05/01 07:22

volumechangeで音量のイベントを取得することに囚われて、seekbarでのイベントの取得方法に気付くことができませんでした。本当にありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問