Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/91.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.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代码以使其更加模块化和简洁? 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 - Fatal编程技术网

如何重构此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代码以使其更加模块化和简洁? 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('

我希望能够不断添加视频,在观看时播放,而不必不断添加变量、事件侦听器。在javascript中,您不能删除具有参数函数的侦听器,这就是我将这些参数放入变量的原因。欢迎有任何见解。

首先获取一组中所有视频元素的集合,然后添加一个滚动侦听器。当侦听器运行时,对集合进行迭代。无论何时找到正在观看的视频,播放该视频并将其从视频集中移除:

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!