Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/446.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/4/video/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中的eventListener_Javascript_Dom Events_Addeventlistener_Event Listener - Fatal编程技术网

删除Javascript中的eventListener

删除Javascript中的eventListener,javascript,dom-events,addeventlistener,event-listener,Javascript,Dom Events,Addeventlistener,Event Listener,我有以下情况: id为的部分#部分,在上双击我正在添加一个表单,其中包含标签,输入保存按钮和关闭表单按钮 对于关闭表单上的按钮,单击我有另一个事件要删除表单,该事件不起作用。你能告诉我这个代码有什么问题吗 var setAttributes=函数setAttributes(el,attrs){ for(属性中的变量键){ el.setAttribute(key,attrs[key]); } }; 函数createForm(){ var form=document.createElement('

我有以下情况:

id为
部分
#部分
,在上双击我正在添加一个表单,其中包含
标签
输入
保存按钮和
关闭表单按钮

对于
关闭表单上的
按钮,单击我有另一个事件要删除表单,该事件不起作用。你能告诉我这个代码有什么问题吗

var setAttributes=函数setAttributes(el,attrs){
for(属性中的变量键){
el.setAttribute(key,attrs[key]);
}
};
函数createForm(){
var form=document.createElement('form');
设置属性(表格、{
“类”:“热点表单”
});
var labelT=document.createElement('label');
设置属性(labelT{
“for”:“title”
});
labelT.innerHTML='Title';
var input=document.createElement('input');
设置属性(输入{
“类型”:“文本”,
“名称”:“标题”,
“id”:“inputTitle”
});
var labelD=document.createElement('label');
设置属性(labelD{
“for”:“description”
});
labelD.innerHTML='Description';
var inputD=document.createElement('input');
设置属性(输入{
“类型”:“文本”,
“名称”:“说明”,
“id”:“inputDescription”
});
var saveButton=document.createElement('button');
设置属性(保存按钮{
“id”:“按钮保存”,
“类型”:“提交”
});
saveButton.innerHTML='Save';
var closeButton=document.createElement('button');
设置属性(关闭按钮{
“id”:“按钮关闭”,
“类型”:“按钮”
});
closeButton.innerHTML='Close Form';
表格:儿童(labelT);
表单。追加子项(输入);
表格.附属儿童(labelD);;
表单。追加子项(inputD);
表单.appendChild(保存按钮);
表单.appendChild(关闭按钮);
申报表;
}
var section=document.querySelector(“#section”);
控制台日志(部分);
节.addEventListener('dblclick',addForm,false);
函数addForm(){
var form=createForm();
第2节附加物(表格);
var input=form.querySelector('#inputtle');
var inputD=form.querySelector(“#inputDescription”);
var saveButton=form.querySelector(“#按钮保存”);
var closeButton=form.querySelector(“#按钮关闭”);
input.addEventListener('input',saveInput,false);
inputD.addEventListener('input',saveInput,false);
函数saveInput(){
var newTitle=输入值;
var newDescription=inputD.value;
}
closeButton.addEventListener('单击',函数()){
节。removeEventListener('dblclick',addForm,false);
},假);
}
#节{
宽度:300px;
高度:300px;
边框:1px纯黑;
}
.热点表格{
背景色:#3d3D;
填充物:5px;
}
.热点表单标签{
显示:内联块;
颜色:#ffffff;
}
.热点表单输入{
显示:内联块;
宽度:100%;
边界:0;
保证金:0;
填充:0;
}

关闭按钮事件处理程序不会删除表单,它只是从节中删除双击事件处理程序。要删除该表单,它应该是:

closeButton.addEventListener("click", function() {
    section.removeChild(form);
});

实际上,您没有关闭表单的事件;您有一个事件来阻止双击的发生,但仅在关闭表单时发生(我猜这是您希望双击工作的时刻)。在“关闭”按钮中要做的是重新添加双击发生后删除的双击事件,然后删除表单。一切都正常,但因为只是添加和删除事件侦听器,所以看不到效果。因此,当您单击“关闭窗体”按钮时,必须删除该特定窗体,对吗?我不认为是这样,因为如果我添加
console.log('close button');
closeButton.addEventListener('click',function(){…};
控制台显示文本UHM,是的,事件正在被触发,但该事件的结果不是您所期望的。Barmar下面有一个答案,这可能是您的问题,但我也认为删除dblclick没有意义(打开表单时双击将打开新表单,但关闭一个表单,双击将永远停止…)无论如何,效果是看不见的。我说过你的代码正在工作。我知道如果我将
按钮的
类型更改为
提交
,表单将关闭,但我希望能够使用任何类型的元素删除eventListener