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

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

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

YouTube APIはYouTubeのビデオコンテンツと機能性をウェブサイト、アプリケーション、デバイスに統合することを可能にします。

JavaScript

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

Q&A

0回答

1839閲覧

Youtube IFrame API を使って複数動画を再生させたい

YuriY

総合スコア33

YouTube API

YouTube APIはYouTubeのビデオコンテンツと機能性をウェブサイト、アプリケーション、デバイスに統合することを可能にします。

JavaScript

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

0グッド

0クリップ

投稿2020/04/01 09:23

動的に取得したYoutubeIDをもとに複数のYoutube動画を再生させたいのですが、
onYouTubeIframeAPIReady()内部の配列に挿入する部分でnullになってしまいうまく動作しません。

javascriptが不慣れで原因がわからず困っております。

参考ソース
https://www.neko-it.com/blog/4534.html

HTML

1<div id="youtube01" data-yt="lnbFQ9zVwG8" class="video-area"></div> 2<div id="youtube02" data-yt="lnbsQ9zVwG8" class="video-area"></div> 3<div id="youtube03" data-yt="lnbFQ9zVqG8" class="video-area"></div> 4

javascript

1 2//youyube 3$(function() { 4 5 var ytData = []; 6 var ytPlayer = []; 7 8 9 const arrayIds = document.querySelectorAll("div[id*='youtube']"); 10 11 arrayIds.forEach(function(target) { 12 var iframe = target.id; 13 var youtube = document.getElementById(iframe); 14 var youtubeId = youtube.getAttribute('data-yt'); 15 var ojbect = { 'area' : iframe, 'id' : youtubeId }; 16 ytData.push(ojbect); 17 }) 18 19 // YouTube Player APIの読み込み 20 var tag = document.createElement('script'); 21 tag.src = "https://www.youtube.com/iframe_api"; 22 var firstScriptTag = document.getElementsByTagName('script')[0]; 23 firstScriptTag.parentNode.insertBefore(tag, firstScriptTag); 24 25 // プレイヤーの埋め込み 26 function onYouTubeIframeAPIReady() { 27 for(var i = 0; i < ytData.length; i++){ 28 console.log(ytData); 29 ytPlayer[i] = new YT.Player(ytData[i]['area'], { 30 videoId: ytData[i]['id'], 31 playerVars: { 32 rel: 0, // 関連動画の非表示 33 controls: 0, // プレイヤーコントロールの非表示 34 showinfo: 0, // タイトルなどの非表示 35 modestbranding: 1, // YouTubeロゴの非表示 36 iv_load_policy: 3, // アノテーションの非表示 37 wmode: 'transparent' 38 }, 39 events: { 40 'onReady': onPlayerReady, 41 'onStateChange': onPlayerStateChange 42 } 43 }); 44 } 45 } 46 47 // プレーヤーの準備ができたとき 48 function onPlayerReady(event) { 49 ytPlayer.playVideo(); 50 ytPlayer.mute(); 51 } 52 53 // 動画再生中と再生後の動作 54 function onPlayerStateChange(e) { 55 var ytStatus = e.target.getPlayerState(); 56 if (ytStatus == YT.PlayerState.PLAYING) { //再生中 57 } 58 if (ytStatus == YT.PlayerState.ENDED) { //再生後 59 ytPlayer.playVideo(); 60 ytPlayer.mute(); 61 } 62 } 63 64});

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問