Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/386.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_Onclick_Lightbox_Removechild - Fatal编程技术网

Javascript 创建可以自行删除的元素?

Javascript 创建可以自行删除的元素?,javascript,onclick,lightbox,removechild,Javascript,Onclick,Lightbox,Removechild,我正在构建一个灯箱作为一个学校项目,我不能使用jQuery。我有一张照片。当您单击它时,Javascript生成一个ID为“overlay”的透明div。我希望div删除它自己,或者父级删除它,但它不起作用。我认为这与您无法将“onclick”链接到尚不存在的元素有关。不要在标记中使用onclick处理程序,请使用Javascripts事件函数,例如将事件动态添加到元素中。您还应该确保在删除元素时正确地清理了所有引用(换句话说,注销事件处理程序)。您必须从父元素中删除元素。大概是这样的: d =

我正在构建一个灯箱作为一个学校项目,我不能使用jQuery。我有一张照片。当您单击它时,Javascript生成一个ID为“overlay”的透明div。我希望div删除它自己,或者父级删除它,但它不起作用。我认为这与您无法将“onclick”链接到尚不存在的元素有关。

不要在标记中使用
onclick
处理程序,请使用Javascripts事件函数,例如将事件动态添加到元素中。您还应该确保在删除元素时正确地清理了所有引用(换句话说,注销事件处理程序)。

您必须从父元素中删除元素。大概是这样的:

d = document.getElementById('overlay');
d.parentNode.removeChild(d);
image.onclick = function(){ *create overlay*};
overlay.oncklick = function() {*overlay.parentNode.removeChild(overlay)*};
或者你可以把它藏起来:

d.style.display = 'none';
而且,哦:您可以通过将函数分配给onclick属性,将Javascript代码添加到(新创建的)元素中

d = document.createElement('div');
d.onclick = function(e) { this.parentNode.removeChild(this) };
我明白了:) 我像巴特·萨德那样做,但没用。我的代码如下所示:

d = document.getElementById('overlay');
d.parentNode.removeChild(d);
image.onclick = function(){ *create overlay*};
overlay.oncklick = function() {*overlay.parentNode.removeChild(overlay)*};
浏览器就像wtf?因为它读取代码并认为“我无法检查用户是否单击了不存在的元素。” 所以我这样做了:

image.onclick = function(){

*create overlay*

overlay.onclick = function() {*remove overlay*};
};

您可以按如下方式删除该元素

var el = document.getElementById('div-02');
el.remove(); // Removes the div with the 'div-02' id

有关详细信息,请参见

没错,您不能。因此,在将钩子附加到身体后设置钩子。此外,您的问题还可以从一些代码和示例中受益,这些代码和示例说明了您尝试过的内容以及出现的问题。请发布您当前的HTML输出和用于创建覆盖的脚本。如果您希望根据经过的时间自动删除它(如果可行),我们可以添加一个
setTimeout
,或者我们可以向父元素添加一个事件来删除它。不过,使用相关代码会更容易。