当前位置: 首页 > 知识库问答 >
问题:

如何点击更改html5视频源?

陈瀚玥
2023-03-14

我要做的是创建一种播放列表,只使用html5和vanilla javascript(不使用jquery)。相同的短视频一直循环直到你点击其中一个箭头,然后一行中的下一个(或上一个)视频被加载到相同的视频元素中。

以下是我的资料:

HTML

<video autoplay="true" loop="true" id="video">
    <source src="img-vid/video1.mp4" type="video/mp4" id="vid-src">
</video>
<img src="img-vid/Arrow_left.png" class="arrow arrow-left" id="left">
<img src="img-vid/Arrow_right.png" class="arrow arrow-right" id="right">

JavaScript

var button_next = document.getElementById("right");
var button_previous = document.getElementById("left");
var playlist = document.getElementById("video");
var source = document.getElementById("vid-src");

button_next.onclick = play_next;
button_previous.onclick = play_prev;

function play_next() {
    var filename = '';
    if (source.src == "img-vid/video1.mp4"){
        filename = "video2";
    }
    else if (source.src == "img-vid/video2.mp4"){
        filename = "video3";
    }
    else if (source.src == "img-vid/video3.mp4"){
        filename = "video4";
    }
    else {
        filename = "video1";
    }
    source.src = "img-vid/" + filename + ".mp4";
    playlist.load();
    playlist.play();
}

//same for function play_prev(), but order of videos is reversed

但是,使用这段代码,单击任何一个箭头似乎都没有任何作用。但我不确定我做错了什么。我首先想到的是if测试失败了,所以它只是重新加载了相同的视频,但即使在删除了测试并将文件名设置为“videO2”之后,它也没有做任何事情。

编辑1:改变了var文件名的作用域,像Dev-One建议的那样。视频来源仍然没有改变,但。

编辑2:更改以下内容:

button_next.onclick = play_next;
button_previous.onclick = play_prev;

button_next.addEventListener("click", play_next);
button_previous.addEventListener("click", play_prev);

似乎有帮助。现在点击箭头时,视频会发生变化,但不是正确的。按下箭头-向右总是显示video1,而按箭头-向左总是显示Video3。这些是每个方法的最后一个else语句中的视频,所以我的if测试似乎仍然存在一个问题。

编辑3:现在一切都在按计划工作!我也不得不改变

source.src == ...

source.getAttribute("src") == ...

在我的IF测试中。source.src总是返回完整的url(http://.../img-vid/video1.mp4),而不是相对的url(img-vid/video1.mp4),因此每个if测试都失败。

共有2个答案

王棋
2023-03-14

通过观察代码,我可以发现一个错误是var filename的使用超出了范围。

将其更改为:

function play_next() {

    var filename = '';

    if (source.src == "img-vid/video1.mp4"){
        filename = "video2";
    }
    else if (source.src == "img-vid/video2.mp4"){
        filename = "video3";
    }
    else if (source.src == "img-vid/video3.mp4"){
        filename = "video4";
    }
    else {
        filename = "video1";
    }
    source.src = "img-vid/" + filename + ".mp4";
    playlist.load();
    playlist.play();
}
陆啸
2023-03-14

正如我所做的编辑中提到的,我通过将button.onclick更改为button.addeVentListener(),并将source.src更改为source.getAttribute(“src”)来解决我的问题。

 类似资料:
  • 本文向大家介绍HTML5如何嵌入视频?相关面试题,主要包含被问及HTML5如何嵌入视频?时的应答技巧和注意事项,需要的朋友参考一下 和音频类似,HTML5支持MP4、WebM和Ogg格式的视频,下面是简单实例:  

  • function checkVideo() { if(!!document.createElement('video').canPlayType) { var vidTest=document.createElement("video"); oggTest=vidTest.canPlayType('video/ogg; codecs="theora, vorbis"'); if (!oggTest

  • 问题内容: 我这样更改了TextField样式: 现在,我希望它在用户点击时更改样式。 我的CustomTextFieldStyle定义为: 问题答案: 你有自己的TextStyle示例吗?请分享吧! 更新 您最好在样式中使用一些参数并将其绑定到“父”视图 结果看起来像

  • 我试图在基于bootstrap 2.2.2的设计中嵌入HTML5视频,但它在Firefox上不起作用,但它在chrome上运行良好,但在Firefox上说我尝试将这些添加到.htaccess文件中,并将其上传到根目录中,但这也没有帮助。 null 注意:我看了前面关于stackoverflow的问题,但没有运气,而且我没有apache配置文件来允许视频样式,因为我是在共享主机上。

  • 问题内容: 我发现了如何使用jquery暂停和播放视频 但是我找不到静音按钮,如果没有jquery解决方案,我只需要一个onclick js解决方案就可以了。我需要尽快。 还有解决静音延迟的方法吗?我希望它在单击按钮后立即将声音静音/取消静音。 问题答案: $(“video”).prop(‘muted’, true); //mute 和 (旁注:在jQuery <1.6中使用if)

  • 问题内容: 我想更新HTML5视频元素中的source标签,以便单击按钮时,无论播放什么内容,都将切换到新视频。 我有一个Clip组件,它返回一个HTML5视频元素,其源URL通过props提供。 我还有一个Movie组件,其中包含多个URL,每个URL对应于电影的一部分。它还包含一个position属性,它通过记住当前正在播放的部分来充当迭代器。 电影组件呈现一个Clip组件和一个“ Next”