Nano Hash - криптовалюты, майнинг, программирование

Как отображать видео на YouTube на основе динамического выпадающего списка?

Я работаю над динамическим выпадающим меню:

  • с 3 выпадающими полями;
  • где сначала необходимо выбрать «серию» в первом раскрывающемся списке;
  • где во 2-м нужно выбрать «сезон» во 2-м раскрывающемся списке;
  • где на 3-м можно выбрать «эпизод» в 3-м раскрывающемся списке.

Кроме того, кнопки «предыдущая» и «следующая» позволяют переходить назад/вперед в третьем раскрывающемся списке.

Я борюсь со следующими двумя пунктами.

  1. Я хотел бы связать определенные эпизоды с определенными переменными, которые соответствуют определенным (11-значным) идентификаторам видео YouTube,
  2. Я хотел бы, чтобы iframe отображал конкретное видео Youtube, относящееся к выбранному сериалу-сезону-эпизоду, в динамических раскрывающихся меню.

Как это можно устроить?

Пожалуйста, найдите ниже код, который я использовал до сих пор.

<style>
.serie {
width: 200px;
font-weight: normal;
font-size: 100%;
font-weight: bold;
font-family: Verdana;   
margin-top: 5px;        
margin-left: 0px;
color:#000000;
background: #F3FED0;
border: 2px solid #92AD34;
}
.seizoen {
width: 180px;
font-weight: normal;
font-size: 100%;
font-weight: bold;
font-family: Verdana;   
margin-top: 2px;        
margin-left: 0px;
color:#000000;
background: #F3FED0;
border: 2px solid #92AD34;
}
.aflevering {
width: 210px;
font-weight: normal;
font-size: 100%;
font-weight: bold;
font-family: Verdana;   
margin-top: 2px;        
margin-left: 0px;
color:#000000;
background: #F3FED0;
border: 2px solid #92AD34;
}

.wrap {
text-align:center;
margin-top: 10px; 
}
#div1 {
display: inline-block;
border: 2px solid red;
float: left;
}
#div2 {
display: inline-block;
text-align: center;
border: 0px solid green;
}
#div3 {
display: inline-block;
border: 2px solid blue;
position: relative;
float: right;
}
select.center {
position: relative;
display: inline-block;
}
input.right {
position: relative;
float: right;
}
</style>

<iframe id="myIframe" src="http://www.alumnei.nl/images/learninglane.jpg" frameborder="0" marginwidth="0" marginheight="0"  width="100%" height="450" related="0" allowfullscreen scrolling="no"></iframe>

<div class="wrap">

<div id="div1"><input type="button" value="vorige" onClick="nextTiles(-1)"></div>

<div id="div2">
<form name="myform" id="myForm">
    <select class="serie" name="optone" id="seriesSel" size="1">
    <option value="" selected="selected">Kies de serie</option>
    </select>

    <select class="seizoen" name="opttwo" id="seasonSel" size="1">
    <option value="" selected="selected">Kies eerst de serie</option>
    </select>

    <select class="aflevering overlaySelector" id="episodeSel" name="optthree" size="1">
    <option value="" selected="selected">Kies eerst het seizoen</option>
    </select>
    </form>
</div>

<div id="div3"><input type="button" class="right" value="volgende" onClick="nextTiles(1)"></div>

</div>


<script language=javascript>

function setIframeSource() {
//do whatever you're doing
;
}
function nextTiles(i) {
var e = document.getElementsByClassName("overlaySelector")[0];
e.selectedIndex +=i ;
//loop-around from the top or bottom depending on increment/decrement
if(e.selectedIndex == -1) {
if(i>0) e.selectedIndex = 0;
else e.selectedIndex = e.length - 1;
}
setIframeSource(); //with the now updated selected option,
//do whatever you were doing when the user manually chooses something in the dropdown
}
var seriesObject = {
    "Donald Duck": {
        "Seizoen 2004": ["aflevering 1", "aflevering 2", "aflevering 3", "aflevering 4"],
        "Seizoen 2005": ["aflevering 1", "aflevering 2", "aflevering 3", "aflevering 4", "aflevering 5", "aflevering 6"]
    },
    "Bob de Bouwer": {
        "Seizoen 2011": ["aflevering 1", "aflevering 2", "aflevering 3", "aflevering 4", "aflevering 5", "aflevering 6", "aflevering 7"],
        "Seizoen 2012": ["aflevering 1", "aflevering 2", "aflevering 3", "aflevering 4", "aflevering 5", "aflevering 6", "aflevering 7", "aflevering 8", "aflevering 9"]
    },
    "Brandweerman Sam": {
        "Seizoen 2009": ["aflevering 1", "aflevering 2", "aflevering 3", "aflevering 4", "aflevering 5", "aflevering 6", "aflevering 7"],
        "Seizoen 2010": ["aflevering 1", "aflevering 2", "aflevering 3", "aflevering 4", "aflevering 5", "aflevering 6", "aflevering 7", "aflevering 8", "aflevering 9"],
        "Seizoen 2011": ["aflevering 1", "aflevering 2", "aflevering 3", "aflevering 4", "aflevering 5", "aflevering 6", "aflevering 7", "aflevering 8", "aflevering 9"],
        "Seizoen 2012": ["aflevering 1", "aflevering 2", "aflevering 3", "aflevering 4", "aflevering 5", "aflevering 6", "aflevering 7", "aflevering 8", "aflevering 9"]
    }
}
window.onload = function () {
    var seriesSel = document.getElementById("seriesSel"),
        seasonSel = document.getElementById("seasonSel"),
        episodeSel = document.getElementById("episodeSel");
    for (var series in seriesObject) {
        seriesSel.options[seriesSel.options.length] = new Option(series, series);
    }
    seriesSel.onchange = function () {
        seasonSel.length = 1; // remove all options bar first
        episodeSel.length = 1; // remove all options bar first
        if (this.selectedIndex < 1) {
          seasonSel.options[0].text = "Kies eerst de serie"
          episodeSel.options[0].text = "Kies eerst het seizoen"
          return; // done   
        }  
        seasonSel.options[0].text = "Kies het seizoen"
        for (var season in seriesObject[this.value]) {
            seasonSel.options[seasonSel.options.length] = new Option(season, season);
        }
        if (seasonSel.options.length==2) {
          seasonSel.selectedIndex=1;
          seasonSel.onchange();
        }     
    }
    seriesSel.onchange(); // reset in case page is reloaded
    seasonSel.onchange = function () {
        episodeSel.length = 1; // remove all options bar first
        if (this.selectedIndex < 1) {
          episodeSel.options[0].text = "Kies eerst het seizoen"
          return; // done   
        }  
        episodeSel.options[0].text = "Kies de aflevering"

        var cities = seriesObject[seriesSel.value][this.value];
        for (var i = 0; i < cities.length; i++) {
            episodeSel.options[episodeSel.options.length] = new Option(cities[i], cities[i]);
        }
        if (episodeSel.options.length==2) {
          episodeSel.selectedIndex=1;
          episodeSel.onchange();
        }   
    }
}

</script>

  • Я удалил ссылку из этого вопроса, которая возвращала 404 (удалено). Это прискорбно, поскольку вопрос скорее зависит от того, что там было. Кроме того, самостоятельный ответ, вероятно, был очень полезен, но ссылка, от которой он зависел, также мертва (404). Я проголосую за то, чтобы закрыть вопрос на данный момент, но если вы сможете исправить вопросы, чтобы им не нужны были ссылки, это было бы идеально. 11.11.2019

Ответы:


1

Сначала вам нужно использовать iframe API.
Его можно найти ЗДЕСЬ

Затем, когда вы заполняете раскрывающиеся списки «эпизодов», сделайте значение 11-значным идентификатором видео.

<option value="Q6IEtjaSGHg">aflevering 2</option>

Затем в коде вы можете отправить это игроку

javascript:loadNewVideo('Q6IEtjaSGHg');

    function loadNewVideo(id, startSeconds) {
        ytplayer.loadVideoById(id, parseInt(startSeconds));

    }
08.05.2017

2

С небольшой, но существенной помощью этого сообщества и Рональда я смог найти некоторые рабочие ответы.

Для рабочего примера выберите:

  • 1-й выпадающий список: выберите «Feuerwehrmann Sam».
  • 2-й раскрывающийся список: выберите «8 сезон — 2012» или «9 сезон — 2014».
  • 3-й раскрывающийся список: выберите эпизод по вашему выбору.

Пожалуйста, найдите ниже этот рабочий скрипт:

<style>
.serie {
width: 200px;
font-size: 100%;
font-weight: bold;
font-family: Verdana;   
margin-top: 5px;        
margin-left: 0px;
color:#525e66;
background: #F3FED0;
border: 2px solid #92AD34;
}
.seizoen {
width: 210px;
font-weight: normal;
font-size: 100%;
font-weight: bold;
font-family: Verdana;   
margin-top: 2px;        
margin-left: 0px;
color:#525e66;
background: #F3FED0;
border: 2px solid #92AD34;
}
.aflevering {
width: 222px;
font-weight: normal;
font-size: 100%;
font-weight: bold;
font-family: Verdana;   
margin-top: 2px;        
margin-left: 0px;
color:#525e66;
background: #F3FED0;
border: 2px solid #92AD34;
}

.wrap1 {
text-align:center;
margin-top: 10px; 
width: 100%;
}
.wrap2 {
text-align:center;
margin-top: 10px; 
width: 100%;
}
#div1 {
display: inline-block;
border: 2px solid red;
float: left;
}
#div2 {
display: inline-block;
text-align: center;
border: 0px solid green;
}
#div3 {
display: inline-block;
border: 2px solid blue;
position: relative;
float: right;
}
.div4 {
width: 642px;
font-size: 100%;
font-weight: bold;
font-family: Verdana;   
text-align: center;
display: inline-block;
margin-top: 0px;
margin-left: 3px;
background: #F3FED0;        
border: 2px solid #92AD34;
float: center;

select.center {
position: relative;
display: inline-block;
}
input.right {
position: relative;
float: right;
}
</style>

<iframe id="myIframe" src="http://www.alumnei.nl/images/learninglane.jpg" frameborder="0" marginwidth="0" marginheight="0"  width="100%" height="510" related="0" allowfullscreen scrolling="no"></iframe>

<div class="wrap1">

<div id="div1"><input type="button" value="zurück" onClick="nextTiles(-1)"></div>

<div id="div2">
<form name="myform" id="myForm">
    <select class="serie" name="optone" id="seriesSel" size="1">
    <option value="" selected="selected">Wähle die Serie</option>
    </select>

    <select class="seizoen" name="opttwo" id="seasonSel" size="1">
    <option value="" selected="selected">Wähle zuerst die Serie</option>
    </select>

    <select class="scrolly aflevering overlaySelector" id="episodeSel" name="optthree" size="2">
    <option value="" selected="selected">Wähle zuerst die Saison</option>
    </select>
    </form>
</div>

<div id="div3"><input type="button" class="right" value="weiter" onClick="nextTiles(1)"></div>

</div>

<div class="wrap2">
<div id="myTitle" class="div4">Name der Episode</div>
</div>






<script language=javascript>

function setIframeSource(aCode) {
  if (aCode.length >= 11){
    YouTubeCode = aCode.substr(0,11);
    Titel = aCode.substr(11)
  document.getElementById("myIframe").src="https://www.youtube.com/embed/"+YouTubeCode+"?rel=0&fs=0&autoplay=1&modestbranding=1";
    Omschrijving = aCode.substr(11).split(", "); 
    document.getElementById("myTitle").innerHTML = ""+Omschrijving[3];
  }  
}

var seriesObject = {
    "Donald Duck": {
        "Seizoen 2004": ["afl 1", "afl 2", "afl 3", "afl 4"],
        "Seizoen 2005": ["afl 1", "afl 2", "afl 3", "afl 4", "afl 5", "afl 6"]
    },
    "Bob de Bouwer": {
        "Seizoen 2011": ["afl 1", "afl 2", "afl 3", "afl 4", "afl 5", "afl 6", "afl 7"],
        "Seizoen 2012": ["afl 1", "afl 2", "afl 3", "afl 4", "afl 5", "afl 6", "afl 7", "afl 8", "afl 9"]
    },
    "Feuerwehrmann Sam": {
        "Saison 1: 1987": ["Z9dN-YJE7Ek Brandweerman Sam, 1: 1987, 1, Der Drachen", 
                         "-E4_JlaCr_U Brandweerman Sam, 1: 1987, 2, Der Scheunenbrand",
                         "6rpu32dfl_s Brandweerman Sam, 1: 1987, 3, Die Feuerwehrübung",
                         "P5nPw5qXBCo Brandweerman Sam, 1: 1987, 4, Die Reifenpanne",
                         "VFAEBbva454 Brandweerman Sam, 1: 1987, 5, Uit kamperen / Kamperen",
                         "KBKQ-a28YVw Brandweerman Sam, 1: 1987, 6, Norman macht Dummheiten", 
                         "fLHv3AiueWQ Brandweerman Sam, 1: 1987, 7, Die verschwundene Katze",
                         "jhOwSuMm2O4 Brandweerman Sam, 1: 1987, 8, Televisietoestanden / De commandant wordt beroemd"],
        "Seizoen 2009": ["afl1", "afl2", "afl 3", "afl 4", "afl 5", "afl6", "afl7"],
        "Seizoen 2010": ["afl1", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "afl 17", "afl 18", "afl 19"],
        "Seizoen 2011": ["afl 1", "afl 2", "afl 3", "afl 4", "afl 5", "afl 6", "afl 7", "afl 8", "afl 9"],
        "Saison 8 - 2012": ["mKUR5kBxcds Feuerwehrmann Sam, 2012, 01, Gwendolyns millionster Kunde",
                        "n1PCPV81oMo Feuerwehrmann Sam, 2012, 02, Norman erobert Jupiter",
                        "2SfJBjCHwfI Feuerwehrmann Sam, 2012, 03, Ein Schal für den Schneemann",
                        "LYdjgYSehOk Feuerwehrmann Sam, 2012, 04, Besserwisser Boyce",
                        "Bx6EBMg8bwM Feuerwehrmann Sam, 2012, 05, Elvis und die Riesengitarre",
                        "piMV785edvE Feuerwehrmann Sam, 2012, 06, Mandy in Seenot",
                        "1pAILBw_1Eo Feuerwehrmann Sam, 2012, 07, Norris das Meerschweinchen",
                        "OP5O6OEAv6c Feuerwehrmann Sam, 2012, 08, Sam und der Eisbär",
                        "sPgCF52lRnY Feuerwehrmann Sam, 2012, 09, Großes Tamtam für den neuen Bahnhof",
                        "YWIA1GI2Tt4 Feuerwehrmann Sam, 2012, 10, Verschollen auf dem Pontypandy-Berg",
                        "Vdop8ao43xU Feuerwehrmann Sam, 2012, 11, Gefahr im Pontypandy-Express",
                        "dgsGsOnO1ds Feuerwehrmann Sam, 2012, 12, Das Monster von Pontypandyness",
                        "HExQMU_Vd8A Feuerwehrmann Sam, 2012, 13, Dilys die Seeplage",
                        "bu3A_XatIIo Feuerwehrmann Sam, 2012, 14, Frostige Zeiten in Pontypandy",
                        "tcxf_Cg3hns Feuerwehrmann Sam, 2012, 15, Normans Halloween Trick",
                        "Zt7ip1XAjAc Feuerwehrmann Sam, 2012, 16, Brüder durch dick und dünn",
                        "BWbXLlfAoBw Feuerwehrmann Sam, 2012, 17, Bessie eilt zur Rettung",
                        "E2Wef9mg5OY Feuerwehrmann Sam, 2012, 18, Norman und das Snowboard",
                        "OEEQPOKguJs Feuerwehrmann Sam, 2012, 19, König der Berge",
                        "d9TM5aomVk4 Feuerwehrmann Sam, 2012, 20, Gefangen auf dem Leuchtturm",
                        "GykXc5JbAmM Feuerwehrmann Sam, 2012, 21, Lichterkettenwettkampf",
                        "S2Fl9TXFth8 Feuerwehrmann Sam, 2012, 22, Babysitter in Not",
                        "Ta61rBU1AMM Feuerwehrmann Sam, 2012, 23, Bessie in Gefahr",
                        "_aB3PMNm5rI Feuerwehrmann Sam, 2012, 24, Schlauer als ein Fuchs",
                        "eLp_f5nJTOM Feuerwehrmann Sam, 2012, 25, Lily ist verschwunden",
                        "WBEyjhXAwP0 Feuerwehrmann Sam, 2012, 26, Auf und davon"],
        "Saison 9 - 2014": ["tXYFGWVuKS4 Feuerwehrmann Sam, 2014, 01, Feuer auf See", 
                        "EDCdFVpxZY4 Feuerwehrmann Sam, 2014, 02, Fußball gegen Wissenschaft",
                        "0vbkyHKlJv0 Feuerwehrmann Sam, 2014, 03, Das große Käse Wettrollen",
                        "Tfbtiw8r6TE Feuerwehrmann Sam, 2014, 04, Auf dünnem Eis",
                        "bvSt3juX6F8 Feuerwehrmann Sam, 2014, 05, Der zauberhafte Normansky",
                        "zmp5AqnqZQY Feuerwehrmann Sam, 2014, 06, SOS auf Pontypandy Eiland",
                        "EDCdFVpxZY4 Feuerwehrmann Sam, 2014, 07, Fußball gegen Wissenschaft",
                        "wFVjYfnupHw Feuerwehrmann Sam, 2014, 08, Die beste Pyjamaparty aller Zeiten",
                        "-jQmkMGCYCo Feuerwehrmann Sam, 2014, 09, Wal in Sicht",
                        "PAkQiDCKjqk Feuerwehrmann Sam, 2014, 10, Lämmchen fliegt davon",
                        "dSlv0C8WRnc Feuerwehrmann Sam, 2014, 11, Das supergruselige Frostmonster",
                        "GVBwSYWig_A Feuerwehrmann Sam, 2014, 12, Der Pontypandy GoKart Cup",
                        "GZir90hrFrI Feuerwehrmann Sam, 2014, 13, Balance auf dem Baumhaus",
                        "yqS3xuYMIU0 Feuerwehrmann Sam, 2014, 14, Wer schafft den Rekord",
                        "0MelBFNApJQ Feuerwehrmann Sam, 2014, 15, Die Feuerwand",
                        "9f_6vC7_jDE Feuerwehrmann Sam, 2014, 16, Gefangen in der Schlucht",
                        "_yKxo-1UmSQ Feuerwehrmann Sam, 2014, 17, Mandy und die Seeschildkröte",
                        "RkcLQu6zOmc Feuerwehrmann Sam, 2014, 18, Der Schatz von Pontypandy Pete",
                        "BAnd6Kz3b0I Feuerwehrmann Sam, 2014, 19, Verirrt in den Pontypandy Bergen",
                        "dLWbsC4qTZ8 Feuerwehrmann Sam, 2014, 20, Hund gegen Katze",
                        "U61LowGENtU Feuerwehrmann Sam, 2014, 21, Ameisenalarm",
                        "Y5HVu9uN5uE Feuerwehrmann Sam, 2014, 22, Die Liebesboten",
                        "eMccjfxg20A Feuerwehrmann Sam, 2014, 23, Bühne frei für Feuerwehrmann Sam",
                        "3o3Sd3Nc-5E Feuerwehrmann Sam, 2014, 24, Eine explosive Mischung",
                        "YCHgQRoOg4g Feuerwehrmann Sam, 2014, 25, Norman Man und Atomic Boy"]
    }
}
function nextTiles(i) {
  var e = document.getElementsByClassName("overlaySelector")[0];
      seriesSel = document.getElementById("seriesSel"),
      seasonSel = document.getElementById("seasonSel"),
      episodeSel = document.getElementById("episodeSel");
  e.selectedIndex +=i ;
  //loop-around from the top or bottom depending on increment/decrement
  if(e.selectedIndex == -1) {
    if(i>0) e.selectedIndex = 0;
    else e.selectedIndex = e.length - 1;
  }
//  setIframeSource(); //with the now updated selected option,
////do whatever you were doing when the user manually chooses something in the dropdown
  var codes = seriesObject[seriesSel.value][seasonSel.value];
  if (episodeSel.selectedIndex <= codes.length) {
    setIframeSource(codes[episodeSel.selectedIndex-1]);
  }
}

window.onload = function () {
    var seriesSel = document.getElementById("seriesSel"),
        seasonSel = document.getElementById("seasonSel"),
        episodeSel = document.getElementById("episodeSel");
    for (var series in seriesObject) {
        seriesSel.options[seriesSel.options.length] = new Option(series, series);
    }
    seriesSel.onchange = function () {
        seasonSel.length = 1; // remove all options bar first
        episodeSel.length = 1; // remove all options bar first
        if (this.selectedIndex < 1) {
          seasonSel.options[0].text = "Wähle zuerst die Serie"
          episodeSel.options[0].text = "Wähle zuerst die Saison"
          return; // done   
        }  
        seasonSel.options[0].text = "Wähle die Saison"
        for (var season in seriesObject[this.value]) {
            seasonSel.options[seasonSel.options.length] = new Option(season, season);
        }
        if (seasonSel.options.length==2) {
          seasonSel.selectedIndex=1;
          seasonSel.onchange();
        }     
    }
    seriesSel.onchange(); // reset in case page is reloaded
    seasonSel.onchange = function () {
        episodeSel.length = 1; // remove all options bar first
        if (this.selectedIndex < 1) {
          episodeSel.options[0].text = "Wähle zuerst die Saison"
          return; // done   
        }  
        episodeSel.options[0].text = "Wähle die Episode"

        var episodes = seriesObject[seriesSel.value][this.value];
        for (var i = 0; i < episodes.length; i++) {
            if (episodes[i].length >=11){
              episodeSel.options[episodeSel.options.length] = new Option('Episode '+(i+1), episodes[i]);
            }
        }
        if (episodeSel.options.length==2) {
          episodeSel.selectedIndex=1;
          episodeSel.onchange();
        }   
    }
    episodeSel.onchange = function () {
      if (episodeSel.selectedIndex > 0) {
        var codes = seriesObject[seriesSel.value][seasonSel.value];
        if (this.selectedIndex <= codes.length) {
          aCode = codes[this.selectedIndex-1];
          setIframeSource(aCode);
        }
      }
    }            
}

</script>
15.05.2017
  • ... как вы увидите, 3-й раскрывающийся список состоит из двух видимых полей (поскольку размер был установлен на 2. И этот раскрывающийся список можно прокручивать. Как сделать этот 3-й раскрывающийся список прокручиваемым, когда размер установлен на 1? Любые мысли, как достичь ? 15.05.2017
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..