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];}})