如何重构此Javascript代码以使其更加模块化和简洁? var vid1=document.getElementById(“v1”); var vid2=document.getElementById(“v2”); var vidArr=[vid1,vid2]; var templasterener1=函数checkViewA(){ if(元素视图(视频1)){ 播放视频(vid1); window.removeEventListener('scroll',tempListener1);//因此视频只播放一次 } } var templasterener2=函数checkViewB(){ if(元素视图(视频2)){ 播放视频(vid2); removeEventListener('scroll',tempListener2); } } //滚动事件侦听器 window.addEventListener('scroll',tempListener1); window.addEventListener('scroll',tempListener2); //这会播放视频 异步函数播放视频(v){ v、 play(); }
我希望能够不断添加视频,在观看时播放,而不必不断添加变量、事件侦听器。在javascript中,您不能删除具有参数函数的侦听器,这就是我将这些参数放入变量的原因。欢迎有任何见解。首先获取一组中所有视频元素的集合,然后添加一个滚动侦听器。当侦听器运行时,对集合进行迭代。无论何时找到正在观看的视频,播放该视频并将其从视频集中移除:如何重构此Javascript代码以使其更加模块化和简洁? var vid1=document.getElementById(“v1”); var vid2=document.getElementById(“v2”); var vidArr=[vid1,vid2]; var templasterener1=函数checkViewA(){ if(元素视图(视频1)){ 播放视频(vid1); window.removeEventListener('scroll',tempListener1);//因此视频只播放一次 } } var templasterener2=函数checkViewB(){ if(元素视图(视频2)){ 播放视频(vid2); removeEventListener('scroll',tempListener2); } } //滚动事件侦听器 window.addEventListener('scroll',tempListener1); window.addEventListener('scroll',tempListener2); //这会播放视频 异步函数播放视频(v){ v、 play(); },javascript,html,refactoring,modular,removeeventlistener,Javascript,Html,Refactoring,Modular,Removeeventlistener,我希望能够不断添加视频,在观看时播放,而不必不断添加变量、事件侦听器。在javascript中,您不能删除具有参数函数的侦听器,这就是我将这些参数放入变量的原因。欢迎有任何见解。首先获取一组中所有视频元素的集合,然后添加一个滚动侦听器。当侦听器运行时,对集合进行迭代。无论何时找到正在观看的视频,播放该视频并将其从视频集中移除: const videos = new Set(document.querySelectorAll('video')); window.addEventListener('
const videos = new Set(document.querySelectorAll('video'));
window.addEventListener('scroll', () => {
for (const video of videos) {
if (elementInView(video)) {
video.play();
videos.delete(video);
}
}
});
首先获取集合中所有视频元素的集合,然后添加单个滚动侦听器。当侦听器运行时,对集合进行迭代。无论何时找到正在观看的视频,播放该视频并将其从视频集中移除:
const videos = new Set(document.querySelectorAll('video'));
window.addEventListener('scroll', () => {
for (const video of videos) {
if (elementInView(video)) {
video.play();
videos.delete(video);
}
}
});
天才。非常感谢你!它工作得很好,我会更正您的代码,以便
set.delete(video)
将videos
作为集合的名称。除此之外,它工作得很好。谢谢@CertainPerformance!天才。非常感谢你!它工作得很好,我会更正您的代码,以便set.delete(video)
将videos
作为集合的名称。除此之外,它工作得很好。谢谢@CertainPerformance!