Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/420.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何检测每个视频标签以及它是否';他在玩还是不玩?_Javascript_Jquery_Html - Fatal编程技术网

Javascript 如何检测每个视频标签以及它是否';他在玩还是不玩?

Javascript 如何检测每个视频标签以及它是否';他在玩还是不玩?,javascript,jquery,html,Javascript,Jquery,Html,我正在使用yall.js延迟加载视频。这是它应该做的。不过,我想添加一个加载动画,它将位于视频上方,直到视频开始播放,这样在慢速连接时,您将获得第一帧和一点加载动画 我可以得到的功能,以工作为一个单一的视频,但我希望它能为所有的视频自动和单独的其他网页将有更多的视频,我想有一个通用的可用代码为每一页 我正在使用.each来检测它似乎是的所有视频,但是我想引用每个迭代来针对这些单独的元素运行代码,但它对我不起作用 您的浏览器不支持视频标记。 $('video')。每个(函数(indVideo)

我正在使用yall.js延迟加载视频。这是它应该做的。不过,我想添加一个加载动画,它将位于视频上方,直到视频开始播放,这样在慢速连接时,您将获得第一帧和一点加载动画

我可以得到的功能,以工作为一个单一的视频,但我希望它能为所有的视频自动和单独的其他网页将有更多的视频,我想有一个通用的可用代码为每一页

我正在使用
.each
来检测它似乎是的所有视频,但是我想引用每个迭代来针对这些单独的元素运行代码,但它对我不起作用


您的浏览器不支持视频标记。
$('video')。每个(函数(indVideo){
console.log(indVideo);
var lazyLoader=$('video').next();
var playCheck=setInterval(函数(){
var videoElement=$('video').get(0);//我希望它指的是每个单独的视频,但我相信它只是选择了第一个
console.log(videoElement.paused);
if(videoElement.paused){
console.log(“暂停!”);
}否则{
lazyLoader.removeClass('lazy\u anim'))
console.log(“正在播放!”);
clearInterval(播放检查);
};
}, 2000);
});
因此,问题的关键在于第一个视频是对结果的口述,而不是针对
。每个
迭代都是单独的。我希望在开始播放时,一个视频一个视频地删除
lazy_anim


我对javascript和jquery非常缺乏经验,我只是想混日子,一边学习,所以请原谅我的无知。我一直在绞尽脑汁想这个问题,但我还没有弄明白,非常感谢您的帮助。

您几乎走上了正确的道路。当您在
中的函数中时,每个
中都有正确的元素。不要再次执行查找,也不要使用
.get(0)
。你会有这样的想法:

$('video').each(function (indVideo, videoElement) {
    console.log(indVideo);
    var lazyLoader = videoElement.next();
    var playCheck = setInterval(function() {
        console.log(videoElement.paused);
        if (videoElement.paused) {
            console.log("paused!");
        } else {
            lazyLoader.removeClass('lazy_anim')
            console.log("playing!");
            clearInterval(playCheck);
        };
    }, 2000);
});

看一看。

你似乎把事情弄得比实际需要的更复杂了。与其每隔2秒检查一次视频元素的状态,不如挂接视频上的
播放
暂停
事件,并在此基础上修改
惰性动画
类。试试这个:

$(“视频”)。在({
播放:函数(){
$(this.next().removeClass('lazy_anim');
},
暂停:函数(){
$(this.next().addClass('lazy_anim');
}
});
视频{
宽度:200px;
显示:块;
}
.懒惰的动物{
背景色:#C00;
}

您的浏览器不支持视频标记。
懒惰的动物。。。
您的浏览器不支持视频标记。
懒惰的动物。。。
您的浏览器不支持视频标记。

Lazy anim…
@RoryMcCrossan我试过了,但没有返回错误,但控制台返回videoElement.paused为“undefined”,这意味着代码无法检测视频是否正常播放。通常它返回false/positive@dillonbrannick对不起,我的错,这是
每个
函数中的第二个参数-我更新了答案。我在那里尝试了,但它似乎没有检测到是否正在播放。Rory McCrossan的回答确实简化了情况,而且他们的代码似乎工作得很好。还是非常感谢你的帮助!谢谢哦,我的天,我想当你的知识有限的时候会发生这种情况,我必须研究你的代码来理解它,但它看起来绝对像我希望的那样工作。我甚至不需要暂停功能,因为它用于自动播放视频。非常感谢你的帮助,我昨天和今天整天都在努力让它工作。没问题,很乐意帮忙。当你离问题太近时,我们都会遇到这种情况:)