【问题标题】:How can I change the source of a video after clicking a specific h3 tag?单击特定的 h3 标签后如何更改视频的来源?
【发布时间】:2021-12-10 19:50:29
【问题描述】:

所以我目前正在尝试制作一个视频流媒体网站,但我有点卡住了。

我正在尝试让剧集选择器更改视频的来源,但我有点困惑如何让它更改播放器的来源。我还尝试根据选择的视频更改播放器下方的文本。

    <div class="container">
        <div class="main-video">
            <div class="video">
                <video src="video link here"></video>
                <h3 class="ep-title">00. Prologue</h3>
            </div>
        </div>

        <div class="episode-list">
            <div class="episode active">
                
                <img src="image link here" alt="">
                <h3 class="title">00. Prologue</h3>
            </div>
            <div class="episode">
                <img src="image link here" alt="">
                <h3 class="title">01. A Winter Day, A Fateful Night</h3>
            </div>
            
            </div>
        </div>
    </div>

<script>
    let listVideo = document.querySelectorAll('.episode-list .episode');
    let mainVideo = document.querySelector('.main-video video');
    let title = document.querySelector('.main-video .title')

    listVideo.forEach(video =>{
        video.onclick = () =>{
            listVideo.forEach(episode => episode.classList.remove('active'));
            video.classList.add('active');
            };
        
    });
</script>

这是我的页面代码(不包括导航栏和 plyr 代码)当前的样子。我事先道歉,因为我的问题可能有点复杂(我缺乏脑细胞,哈哈),但感谢您提供任何帮助:)

【问题讨论】:

  • 为可视化目的添加了网站图片

标签: javascript html css web video-streaming


【解决方案1】:

const btn = document.getElementById('change-url');
const video = document.getElementById('video');


btn.addEventListener('click',()=>{
   console.log(video)
   video.setAttribute('src','http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/Sintel.mp4');
})
<button id="change-url">change url</button>
<br/><br/>

<video id="video" src="http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4" width="300px" controls autoplay></video>

【讨论】:

  • 这有点不同,但我明白它是如何工作的。我想要做的是根据选择的情节更改网址。有什么线索吗?
【解决方案2】:

我认为mainVideo.setAttribute('src', YOURSOURCELINK); 应该更改视频源。要更改标题的文本,您可以使用title.innerHTML = "NEWTEXT"

一个例子可能是:

“index”参数是列表中的索引(请记住,js 以 0 开头作为第一个索引),因此要获取第一集,您将使用 changeVideo(0),对于第二集 changeVideo(1) 等

var list = [{
    title: "Episode 1",
    src: "some source link"
},{
    title: "Episode 2",
    src: "seconde source link"
}];


function changeVideo(index){
    let mainVideo = document.querySelector('.main-video video');
    let title = document.querySelector('.main-video .title')

    mainVideo.setAttribute("src", list[index].src)
    title.innerHTML = list[index].title

}

那么您需要在视频选择中添加一个 onclick 事件,例如在您的 &lt;div class="episode"&gt; 中添加 onclick="changeVideo(1)"

【讨论】:

  • 嗯,我明白了。我可以将源链接和新文本存储在剧集 div 下的变量中吗?如果有关于我如何做到这一点的任何线索? (我对 javascript welp 很陌生)
  • 您可以添加一个列表或地图,其中链接/标题映射到剧集编号,然后添加您需要的变量而不是“NEWTEXT”或源链接
  • 我很难理解如何实现这一点,你能提供一个例子吗? (在此先感谢)
  • 我编辑了我的帖子,希望能给你一个更好的例子来说明如何实现这个
  • 我会试一试,告诉你进展如何! :)
猜你喜欢
  • 2014-07-16
  • 1970-01-01
  • 2011-07-11
  • 1970-01-01
  • 1970-01-01
  • 2019-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多