Javascript 使用ES6删除父元素

Javascript 使用ES6删除父元素,javascript,ecmascript-6,Javascript,Ecmascript 6,下面是一个删除父div的尝试。为什么它不起作用 var images=document.querySelector('.gallery'); images.addEventListener('click',RemoveClickedImages); const hasClass=(el,test)=>el.classList.contains(test); 常量removeClickedImage=({target})=>{ if(hasClass(目标为“删除”){ target.paren

下面是一个删除父div的尝试。为什么它不起作用

var images=document.querySelector('.gallery');
images.addEventListener('click',RemoveClickedImages);
const hasClass=(el,test)=>el.classList.contains(test);
常量removeClickedImage=({target})=>{
if(hasClass(目标为“删除”){
target.parentNode.remove();
}
};

x
x

您的问题是
const
函数(以及使用
const
let
初始化的任何其他函数)未被提升:在添加侦听器时,
removeClickeImage
尚未定义。在定义函数后添加侦听器,它就可以正常工作了。只有当所讨论的变量是通过函数声明定义的函数时,才可以依赖这种提升,如
function fnName(){

const hasClass=(el,test)=>el.classList.contains(test);
常量removeClickedImage=({
目标
}) => {
if(hasClass(目标为“删除”){
target.parentNode.remove();
}
};
var images=document.querySelector('.gallery');
images.addEventListener('click',removeClickeImage);

x
x

使用
const
调用函数之前,必须声明函数,请参见:

const removeClickedImage=({target})=>{
if(hasClass(目标为“删除”){
target.parentNode.remove();
}
};
var images=document.querySelector('.gallery');
images.addEventListener('click',RemoveClickedImages);
const hasClass=(el,test)=>el.classList.contains(test);

x
x

您试图在定义之前使用
removeClickedImage
。定义函数removeClickedImage()在images.addeventListener之前,您是否查看了控制台中的错误?它们甚至显示在您问题的片段中。非常感谢。我知道,这完全超出了这个问题的范围,但如何修改它以立即在没有事件侦听器的情况下工作?当然,
removeClickedImage()文件底部的
不起作用,因为它不是一个函数。什么意思,
立即
?监听器立即激活。使用CSS和隐藏复选框可以实现类似的功能,但这是一个不应该使用的非常粗糙的解决方案。Javascript是完成此任务的正确工具我的意思是:。您只需运行脚本,无需单击任何元素即可查看警报。如果您希望立即删除图像,为什么不直接从HTML中删除这些图像呢?或者您也可以删除
.gallery
div。您还可以迭代所有
图像
div,但这有点混乱。不,这是just示例。在现实生活中,它将是userscript的一部分。它将捕获在我滚动浏览器窗口时出现的所有div并将其删除。div本身通过AJAX加载到scroll上。如果此类div包含访问链接,则应将其删除。我已经尝试了不同的方法。