2017-09-18 2 views
0

Ich habe die folgenden iframe und thumbnails auf einer Seite. Wie kann ich Javascript verwenden, so dass immer, wenn ein Thumbnail angeklickt wird, das Daten-embed-src das Standard-src für den iframe wird?Standard iframe src onclick ändern und src nach Seitenaktualisierung beibehalten?

<iframe name = "starterVID" id = "starterVID" width="870" height="498" src="https://www.youtube.com/embed/" frameborder="0" allowfullscreen scrolling="no"></iframe> 
</li> 

    <li class="span9"> 
     <h3>Example</h3> 
    <ul class="thumbnails"> 







     <li class="span3"><a class="thumbnail cboxElement" rel="colorbox" data-embed-src="http://player.vimeo.com/video/" href="http://vimeo.com/"><img src="https://i.vimeocdn.com/video/" alt="">Vid </a> </li> 

      <li class="span3"><a class="thumbnail cboxElement" rel="colorbox" data-embed-src="http://player.vimeo.com/video/" href="http://vimeo.com/"><img src="https://i.vimeocdn.com/video/" alt="">Vid0 </a> </li> 



    <!--  <li class="span3"><a class="thumbnail cboxElement" rel="colorbox" data-embed-src="http://player.vimeo.com/video/" href="https://vimeo.com/"><img src="https://i.vimeocdn.com/video/" alt="">Vid1</a></li> 
--> 

    <li class="span3"><a class="thumbnail cboxElement" rel="colorbox" data-embed-src="http://player.vimeo.com/video/" href="https://vimeo.com/"><img src="https://i.vimeocdn.com/video/" alt="">Vid2</a></li> 

</li> 
      </ul> 

      <ul class="thumbnails"> 

    <li class="span3"><a class="thumbnail cboxElement" rel="colorbox" data-embed-src="https://www.youtube.com/embed/" href="http://www.youtube.com/watch"><img src="http://i4.ytimg.com/vi/" alt="">Vid3</a></li> 

     <li class="span3"><a class="thumbnail cboxElement" rel="colorbox" data-embed-src="http://player.vimeo.com/video/" href="https://vimeo.com/"><img src="https://i.vimeocdn.com/video/" alt="">Vid4</a></li> 


    <li class="span3"><a class="thumbnail cboxElement" rel="colorbox" data-embed-src="http://player.vimeo.com/video/" href="https://vimeo.com/"><img src="https://i.vimeocdn.com/video/" alt="">Vid5</a></li> 

    <li class="span3"><a class="thumbnail cboxElement" rel="colorbox" data-embed-src="https://goo.gl/"><img src="https://goo.gl/" alt="">Picture</a></li> 

Ich hatte den größten Erfolg im folgenden mit Hilfe von Javascript, aber da ich nicht viel Glück mit diesem Ansatz hatte ich versucht, einen anderen Ansatz dachte:

<script type="text/javascript"> 
    function setIframeSource() { 
     var theSelect = document.getElementById('choice'); 
     var theIframe = document.getElementById('starterVID'); 
     var theUrl; 

     theUrl = theSelect.options[theSelect.selectedIndex].value; 
     theIframe.src = theUrl; 
    } 
</script> 
<script> 
    function loadFrame(val, id){ 
     localStorage.setItem(val, id); 

     if(typeof localStorage.getItem('starterVID') != 'undefined'){ 
      $('select').val(localStorage.getItem('starterVID')); 
     }   
    } 
</script> 
+0

zxb413 Hallo, hier auf SO, können Sie über spezielle Programmierprobleme stellen, nicht andere für Sie voll funktionierenden Code zu liefern. Sie müssen Ihre Bemühungen zeigen und Code einfügen, der nicht so funktioniert, wie Sie es möchten. Als Hinweis müssen Sie jedes Mal einen neuen iframe mit einem neuen src entfernen und hinzufügen. Das Ändern von src funktioniert nicht. – marekful

+0

Hey @marekful, willst du mir die 3 verschiedenen Dateien schicken, die ich dafür habe? Ich habe eine ganze Weile damit verbracht und den Basiscode gepostet, den ich benutzt habe, um es für jeden zu erleichtern, der einen Fehler macht. Danke für Ihre Hilfe. – zxb413

+0

https://Stackoverflow.com/help/mcve – marekful

Antwort

0

zu Holen Sie sich den Wert eines data-attribute, ich glaube, Sie sollten getAttribute() verwenden.

getAttribute() gibt den Wert eines bestimmten Attributs auf dem Element. Wenn das angegebene Attribut nicht existiert, ist der zurückgegebene Wert entweder null oder "" (der leere String);

function setIframeSource(vid) { 
 
    var vid = vid.getAttribute('data-source'); 
 
    var theIframe = document.getElementById('myframe'); 
 
    theIframe.src = vid; 
 
}
body { 
 
    display:flex; 
 
    align-items:center; 
 
    justify-content:space-around; 
 
}
<p><a data-source="https://youtube.com/embed/t2ByLmLnYJ8" onclick="setIframeSource(this);return false;" href="https://youtube.com/embed/fORZASxZMEQ">Play Iframe video ?</a> 
 
</p><iframe src="https://stackoverflow.com/questions/46289527/change-default-iframe-src-onclick" id="myframe"></iframe> 
 
<p><a data-source="https://youtube.com/embed/fORZASxZMEQ" onclick="setIframeSource(this);return false;" href="https://youtube.com/embed/fORZASxZMEQ">Play astro video ?</a> 
 
</p>

Über die lokale Speicherung, Sie auf Last sollte, überprüfen Sie, ob es irgendwelche Daten noch ist, zu verwenden, sonst eine Standard-URL verwenden.

Beispiel

window.onload = function() { 
    var loadvid = localStorage.getItem("test"); 
    if (loadvid) {//if anything retrieved 
    setIframeSource('', loadvid); 
    } else {// if empty yet 
    var theIframe = document.getElementById("myframe"); 
    var defaultUrl = theIframe.getAttribute('data-src'); 
    theIframe.src = defaultUrl; 
    } 
}; 
function setIframeSource(vid, video) { 
    if (!video) {// if not from onload or empty yet 
    var video = vid.getAttribute("data-source"); 
    } 
    var theIframe = document.getElementById("myframe"); 
    video = video.replace(/"/g, ''); 
    theIframe.src = video; 
    if (vid) {// if from onclick , then store it 
    localStorage.setItem("test", JSON.stringify(video)); 
    } 
} 

https://codepen.io/gc-nomade/pen/yzOVEL

+0

Vielen Dank für Ihre Hilfe, aber ich habe vergessen um zu erwähnen, dass ich die src behalten musste, auch nachdem die Seite aktualisiert wurde. – zxb413

+0

@ zxb413 Also was hat es nicht funktioniert? den Datenattributwert oder den lokalen Speicherbereich abfangen? Ursache von Ihrem Skript 'theSelect.options [theSelect.selectedIndex] .value' wird nicht viel wie es ist. Wo suchen Sie dann das Video, das Sie in Ihrem lokalen Speicher zuweisen möchten? ... Bitte klären Sie Ihre Frage und wo Sie scheitern, wenn diese Bits Code nicht kopieren/Vergangenheit von wo anders sind;) –

+0

Ihr Code funktionierte gut, ich muss nur die Änderung auf Seite aktualisieren – zxb413