【问题标题】:How do I remove the highlight on the previously selected videos in playlist?如何删除播放列表中先前选择的视频的突出显示?
【发布时间】:2012-06-01 00:10:13
【问题描述】:

我在 HTML 中创建了一个视频播放列表,视频可以播放,但是当您选择另一个视频时,前一个视频保持突出显示,我希望在单击另一个视频名称后删除突出显示。 http://www.evamagnus.com/OurServices.php 在 video.js 代码中,我有

var position = 0;
var playlist;
var video;

window.onload = function() {
    video = document.getElementById('video');
    addClickHandlers();
    video.src = "video/" + getFormatExtension();
    video.load();
    video.play();
}

function addClickHandlers() {
    var liElements = document.querySelectorAll("ul#videolist li");
    for (var i = 0; i < liElements.length; i++) {
        var li = liElements[i];
        li.onclick = handleVideoSelection;
    }
}

function handleVideoSelection(e) {
    console.log(e);
    var li = e.target;
    var src = li.getAttribute("data-src");
    var isSelected = li.getAttribute("class");
    if (isSelected == "selected") {
        if (video.paused) {
            video.play();
        }
        else if (video.ended) {
            video.load();
            video.play();
        }
        else {
            video.pause();
        }
    }
    else {
        li.setAttribute("class", "selected");
        video.src = src + getFormatExtension();
        video.load();
        video.play();
    }
}

function getFormatExtension() {
    if (video.canPlayType("video/mp4") != "") {
        return ".mp4";
    } else if (video.canPlayType("video/ogg") != "") {
        return ".ogg";
    } else if (video.canPlayType("video/webm") != "") {
        return ".webm";
    }
}

谢谢。

【问题讨论】:

    标签: javascript html5-video playlist


    【解决方案1】:

    因为您使用的是 jQuery,所以您应该可以用这个替换 video.js 文件中的所有代码...

    var video = document.getElementById('video');
    var ext = getFormatExtension();  // only need to get the extension once
    
    $("ul#videolist li").click(function(e){
        video.src = e.target.getAttribute("data-src") + ext;
        video.load();
        video.play();
    
        // 1 - clear them all
        $("ul#videolist li").removeClass();
    
        // 2 - set the clicked one
        e.target.setAttribute("class", "selected");
    });
    
    function getFormatExtension() {
        if (video.canPlayType("video/mp4") != "") {
            return ".mp4";
        } else if (video.canPlayType("video/ogg") != "") {
            return ".ogg";
        } else if (video.canPlayType("video/webm") != "") {
            return ".webm";
        }
    }
    

    这是一个在线示例,其中包含几个 css 增强功能,有助于显示它们是带有指针光标和悬停 bg 的按钮。添加了按钮边框和渐变css样式。

    http://jsfiddle.net/DaveAlger/AQYjY/8/

    希望这对您有用(请务必将问题标记为已回答)

    【讨论】:

    • 我希望可以,但我不是牙医。实际上,这些视频现在无法播放。
    • 他们还是不玩。我得再调查一下。谢谢。
    • 它们在我的本地服务器上播放,但不在 evamagnus.com 所在的服务器上。我需要在该服务器上进行一些更改,并将发布结果。
    • 您好 DaveAlger:对于视频无法播放的问题,我深表歉意。最初,我在本地服务器上拥有该站点,然后我将其上传到另一台服务器以提出我的问题,以便其他人可以看到它。视频未播放的原因是该服务器没有 .htaccess 文件来允许播放视频格式。 .htaccess 文件上传后,他们开始播放。您确实回答了我关于删除先前选择的视频的突出显示的原始问题。谢谢!!!
    • 嗨 DaveAlger:我在 JSFIDDLE 中的代码与您的代码相同,但菜单项没有选择亮蓝色。解决方案是将 jQuery 库移动到我的 HTML 的 head 部分,而不是移到 body 部分的底部。哇,这花了太长时间才弄清楚。感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-18
    • 2021-05-03
    • 2018-08-18
    • 1970-01-01
    • 1970-01-01
    • 2018-02-15
    • 2018-06-24
    相关资源
    最近更新 更多