Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/424.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/3/html/83.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_Html - Fatal编程技术网

Javascript 如何取消此事件侦听器

Javascript 如何取消此事件侦听器,javascript,html,Javascript,Html,我在一个分区中有四个视频,在另一个分区中有另一个视频。我做了一个事件侦听器,它将应用于所有五个视频,如您所见 var videoAct=document.queryselectoral('video'), mainVideo=document.getElementById('mainVideo'),//中视频的此id(mainV) allVideo=document.getElementById('allVideo'),//包含四个视频的div的此id mainV=document.getEle

我在一个分区中有四个视频,在另一个分区中有另一个视频。我做了一个事件侦听器,它将应用于所有五个视频,如您所见

var videoAct=document.queryselectoral('video'),
mainVideo=document.getElementById('mainVideo'),//中视频的此id(mainV)
allVideo=document.getElementById('allVideo'),//包含四个视频的div的此id
mainV=document.getElementById('mainV');//此id用于包含一个视频的div
videoAct.forEach(功能(视频){
video.addEventListener('mouseover',function(){
这个。play();
video.muted=true;
});
video.addEventListener('mouseleave',function(){
这个。暂停();
});
})

因此,如何从我的one video in(mainV)中删除此事件侦听器,以便使用其默认设置

您可以在
for
循环中检查要忽略的视频的
id
值,以便不将侦听器添加到该视频中

var videoAct = document.querySelectorAll('video'),
   mainVideo = document.getElementById('mainvideo'), // this id for the video in (mainV )
   allVideo = document.getElementById('allvideo'), // this id for the div that contain the four video
   mainV = document.getElementById('mainv'); // this id for the div that contain one video

videoAct.forEach(function(video){
  if(video.id !== 'mainvideo') {
    video.addEventListener('mouseover',function(){
       this.play();
       video.muted = true;  
    });
    video.addEventListener('mouseleave',function(){
       this.pause();    
    });
  }
})

您不必删除事件,只需不应用它即可

var allVideo = document.getElementById('allvideo'), // this id for the div that contain the four video
   videoAct = allVideo.querySelectorAll('video'); // look for videos only in the #allvideo div

videoAct.forEach(function(video){
   video.addEventListener('mouseover',function(){
      this.play();
      video.muted = true;  
   });
   video.addEventListener('mouseleave',function(){
      this.pause();    
   });
})

您可以使用removeEventListener:为什么要删除侦听器,而您可以在添加事件侦听器时忽略该元素@ZB22我尝试了一下,但没有成功,它在控制台中给了我这个错误(allVideo.forEach不是函数)我给出的代码中没有
allVideo.forEach()
,所以你的代码中有错误,而不是我的答案中。。。你应该在
videoAct
上执行
forEach()
而不是在
allVideo
上,因为
videoAct
包含
video
元素的列表,而
allVideo
只是一个
div
包含那些
video
元素的div,它工作得很好:)@MohamedNagehOtafy很乐意帮助。)如果我想在单击四个视频中的任何一个时,将带有(id=mainVideo)的视频源更改为四个视频中的任何一个源,我尝试将此代码添加到if语句中,但没有成功-->videoAct.forEach(函数(video){if(video.id!='mainVideo'){video.addEventListener('mouseover',function(){this.play();video.muted=true;});video.addEventListener('mouseleave',function(){this.pause();});video.addEventListener('click',function(){var source=this.hasAttribute('src').value;mainVideo.src=src[source];}})