2015-01-14 77 views
0

我試圖改變<video>源的src屬性後,沒有及時更新,但它不打新視頻:視頻修改其<source>元素

<body onload="setvid()"> 
    <div id="container"> 
      <video width="640" height="360" autoplay loop> 
       <source id="srcc" src="" type="video/mp4"> 
      </video> 
    </div> 
    <script type="text/javascript"> 
     function setvid() { 
      document.getElementById("srcc").src = "vid" + Math.floor(Math.random() * 10) + ".mp4"; 
     } 
    </script> 
</body> 

有什麼建議?

+0

該代碼正在爲我工​​作,你看到在控制檯中的任何錯誤? – ianaya89

+0

它應該執行,你確定它不是?它更有可能在它執行的時候無法做到它所需要的。 – Klors

+0

問題不是該函數沒有運行,而是你不能更改'source'元素的'src'。你可以通過給它添加一個'console.log('runs')'來查明函數是否運行。 –

回答

1

specification(重點煤礦):

src屬性提供媒體資源的地址。該值必須是可能被空格包圍的有效非空URL。該屬性必須存在。

注意:當元素已插入videoaudio元素中時,動態修改source元素及其屬性將不起作用。要更改正在播放的內容,只需直接在媒體元素上使用src屬性,可能會利用canPlayType()方法從可用資源中進行選擇。通常,在解析文檔之後手動操作源元素是一種不必要的複雜方法。

因此,您應該將新來源分配給<video>元素。

<div id="container"> 
     <video width="640" height="360" autoplay loop /> 
</div> 
<script type="text/javascript"> 
    function setvid() { 
     document.querySelector('video').src = "..."; 
    } 
</script> 
+0

這似乎工作(謝謝),但將document.getElementById(視頻ID).SRC的工作? @FelixKling – Connor

+0

或者(可能)甚至更好,使用'video.js'等庫來處理源修改操作,以提供更好的錯誤處理並提供備用視頻源。 – Raptor

+0

@Jax:當然,你可以用任何你想要的方式來獲取元素的引用。 –